假设我有一个Base
类和一个继承自Child
的{{1}}类。从Python中的子类调用基类的构造函数的正确方法是什么?我使用Base
吗?
以下是我到目前为止的一个例子:
super
这是对的吗?
谢谢,Boda Cydo。
答案 0 :(得分:51)
这是正确的。请注意,您也可以直接在__init__
类上调用Base
方法,如下所示:
class Child(Base):
def __init__(self, something_else):
Base.__init__(self, value = 20)
self.something_else = something_else
这就是我一般这样做的方式。但它是气馁的,因为它在多重继承的情况下表现不佳。当然,多重继承本身就有各种奇怪的效果,所以我就像瘟疫一样避免它。
一般情况下,如果你继承的课程使用super
,你也需要。
答案 1 :(得分:35)
如果您使用的是Python 3.1,则super是新的并且已经过改进。它为您计算出类和实例参数。所以你应该不用参数调用super:
class Child(Base):
def __init__(self, value, something_else):
super().__init__(value)
self.something_else = something_else
...
答案 2 :(得分:12)
是的,这是正确的。如果您希望能够将value
传递到Child
课程,您可以这样做
class Child(Base):
def __init__(self, value, something_else):
super(Child, self).__init__(value)
self.something_else = something_else
...