假设我有一个继承自的Base类和Child类Base.从Python中的子类调用基类的构造函数的正确方法是什么?我用super吗?
这是我到目前为止的一个例子:
class Base(object):
def __init__(self, value):
self.value = value
...
class Child(Base):
def __init__(self, something_else):
super(Child, self).__init__(value=20)
self.something_else = something_else
...
Run Code Online (Sandbox Code Playgroud)
它是否正确?
谢谢,Boda Cydo.
Chr*_* B. 53
那是正确的.请注意,您也可以__init__直接在Base类上调用该方法,如下所示:
class Child(Base):
def __init__(self, something_else):
Base.__init__(self, value = 20)
self.something_else = something_else
Run Code Online (Sandbox Code Playgroud)
这就是我一般这样做的方式.但它是气馁的,因为它在多重继承的情况下表现不佳.当然,多重继承本身就有各种奇怪的效果,所以我就像瘟疫那样避免它.
一般来说,如果你继承的类是使用的super,你也需要.
Don*_*ell 42
如果您使用的是Python 3.1,则super是新的并且已经过改进.它为您计算出类和实例参数.所以你应该没有参数调用super:
class Child(Base):
def __init__(self, value, something_else):
super().__init__(value)
self.something_else = something_else
...
Run Code Online (Sandbox Code Playgroud)
Joh*_*ooy 12
对,那是正确的.如果你想能够value进入Child课堂,你可以这样做
class Child(Base):
def __init__(self, value, something_else):
super(Child, self).__init__(value)
self.something_else = something_else
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50577 次 |
| 最近记录: |