📜  __init__ 在Python中

📅  最后修改于: 2022-05-13 01:54:47.042000             🧑  作者: Mango

__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

注意:要了解有关继承的更多信息,请单击此处。