__init__ 在Python中
先决条件 - Python类、对象、自我
每当在Python中进行面向对象编程时,我们大多会遇到我们通常不完全理解的__init__
方法。本文解释了__init__
的主要概念,但在理解__init__
之前需要一些先决条件。
__在里面__
__init__
方法类似于C++
和Java
中的构造函数。构造函数用于初始化对象的状态。构造函数的任务是在创建类对象时对类的数据成员进行初始化(赋值)。与方法一样,构造函数也包含在创建对象时执行的语句(即指令)集合。一旦实例化类的对象,它就会运行。该方法对于执行您想要对对象执行的任何初始化很有用。
例子:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
p = Person('Nikhil')
p.say_hi()
输出:
Hello, my name is Nikhil
理解代码
在上面的示例中,创建了一个人名 Nikhil。在创建人时,“Nikhil”作为参数传递,该参数将传递给__init__
方法以初始化对象。关键字self
表示类的实例并将属性与给定的参数绑定。类似地,可以通过传递不同的名称作为参数来创建 Person 类的许多对象。
例子:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
# Creating different objects
p1 = Person('Nikhil')
p2 = Person('Abhinav')
p3 = Person('Anshul')
p1.say_hi()
p2.say_hi()
p3.say_hi()
输出:
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
__init__ 与继承
继承是一个类从其他类派生或继承属性的能力。让我们考虑下面的例子,看看 __init__ 在继承中是如何工作的。
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
# Calling init of parent class
A.__init__(self, something)
print("B init called")
self.something = something
obj = B("Something")
输出:
A init called
B init called
因此,首先调用父类构造函数。但是在Python中,总是首先调用父类构造函数并不是强制性的。可以修改为父类或子类调用 __init__ 方法的顺序。这可以简单地通过在子类构造函数的主体之后调用父类构造函数来完成。
例子:
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
print("B init called")
self.something = something
# Calling init of parent class
A.__init__(self, something)
obj = B("Something")
输出:
B init called
A init called
注意:要了解有关继承的更多信息,请单击此处。