我有以下继承链:
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的构造函数?
答案 0 :(得分:9)
对super()
的调用将当前类作为第一个参数,而不是超类(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__()