Python初始化语法

2024-05-19 14:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在学习Python时,我对使用继承初始化类的语法有一些困惑。在各种例子中,我看到了如下内容:

class Foo(Bar):
    def __init__(self, arg, parent = None):
        Bar.__init__(self, parent)
        self.Baz = arg
        etc.

有时候只是

class Foo(Bar):
    def __init__(self, arg):
        Bar.__init__(self)
        etc.

何时要确保使用“parent”作为初始化函数的参数?谢谢。


Tags: 函数selfnone内容fooinitdef语法
2条回答

一般来说,传递parent不是必需的,只有当父类的构造函数显式需要这样的参数时。这在某些层次结构中使用,例如PyQt。

父类初始化的一个好习惯用法是使用super

class Child(Father):
  def __init__(self):
    super(Child, self).__init__()

在您的示例中,变量“parent”具有误导性。只是父类可能需要必须提供的附加参数

class Pet:
    def __init__(self,name):
        self.name = name

class Dog(Pet):
    def __init__(self,name,age):
        Pet.__init__(self,name)
        self.age = age

在这个例子中,父类Pet需要一个属性(name),子类提供它

如前所述,使用“super”语法调用父类方法

相关问题 更多 >