构造函数 B 在 A -> 中没有被调用。 B-> C继承链
我有以下继承链:
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 类时,输出为:
巴兹
福
为什么 Bar 的构造函数没有被调用?
I have the following inheritance chain:
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__()
When instantiating Baz class the output is:
Baz
Foo
Why isn't Bar's constructor isn't called?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对
super()
的调用将当前类作为第一个参数,而不是超类(super()
会自行解决这个问题)。在这种情况下,以下内容应该可以修复它...请注意对两个super()
调用的更改:The call to
super()
takes the current class as the first argument, not the super class (super()
works that out for itself). In this case, the following should fix it... note the change to bothsuper()
calls: