直接调用__init__的目的是什么?

Ari*_*Ari 6 python init

我很难弄清楚我遇到的一些代码的目的.

代码有一个类Foo,它有一个__init__带多个参数的方法.从我到目前为止学到的Python,通过调用Foo('bar'),它将传递这个字符串作为参数__init__(我认为它应该相当于一个构造函数).

但我遇到的问题是我正在查看的代码是Foo.__init__('bar')直接调用.这样做的目的是什么?我几乎觉得我错过了其他目的__init__.

Ray*_*ger 17

__init__()实例化一个类时,会调用该方法.但是,__init__()父类中的方法不会自动调用,因此如果要扩展其功能,需要直接调用它:

class A:

     def __init__(self, x):
          self.x = x

class B(A):

     def __init__(self, x, y):
          A.__init__(self, x)
          self.y = y
Run Code Online (Sandbox Code Playgroud)

注意,上面的调用也可以使用super编写:

class B(A):

     def __init__(self, x, y):
          super().__init__(x)
          self.y = y
Run Code Online (Sandbox Code Playgroud)

目的的的__init__()方法是初始化该类.它通常负责填充实例变量.因此,您希望__init__()在类层次结构中调用所有类.