在A - > B - > C继承链中不调用构造函数B.

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的构造函数?

Jar*_*die 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__()
Run Code Online (Sandbox Code Playgroud)