the*_*row 2 python oop inheritance constructor
我有以下继承链:
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__()
Run Code Online (Sandbox Code Playgroud)
实例化Baz类时,输出为:
巴兹
富
为什么没有调用Bar的构造函数?
调用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__()
Run Code Online (Sandbox Code Playgroud)