在学习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”作为初始化函数的参数?感谢。
答案 0 :(得分:8)
通常只有当父类的构造函数明确需要这样的参数时,传递parent
才是必需的。这在某些层次结构中使用,例如PyQt。
父类初始化的一个好习惯就是使用super
:
class Child(Father):
def __init__(self):
super(Child, self).__init__()
答案 1 :(得分:3)
在您的示例中,变量“parent”具有误导性。只需父类COULD需要提供必须提供的其他参数
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需要一个属性(名称),子类提供它
正如所指出的,使用“超级”语法来调用父类方法