我有以下继承链:
class Foo(object):
def __init__(self):
print 'Foo'
class Bar(Foo):
def __init__(self):
print 'Bar'
super(Foo, self).__init__()
class Baz(Bar):
def __init__(self):
print 'Baz'
super(Bar, self).__init__()
当实例化 Baz 类时,输出是:
Baz
Foo
为什么不调用 Bar 的构造函数?
最佳答案
对 super()
的调用将当前类作为第一个参数,而不是父类(super class)(super()
自行解决)。在这种情况下,以下应该修复它...注意对两个 super()
调用的更改:
class Foo(object):
def __init__(self):
print 'Foo'
class Bar(Foo):
def __init__(self):
print 'Bar'
super(Bar, self).__init__()
class Baz(Bar):
def __init__(self):
print 'Baz'
super(Baz, self).__init__()
关于python - 构造函数 B 未在 A -> B -> C 继承链中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318849/