假设我有以下继承链:
class Base(object):
def __init__(self, a=1, b=2):
print "BASE"
print a
print b
class Inherit1(Base):
def __init__(self, a=3, b=4):
print "INHERIT1"
super(Inherit1, self).__init__(a=a, b=b)
class Inherit2(Inherit1):
def __init__(self, a=5, b=6):
print "INHERIT2"
super(Inherit2, self).__init__(a=a, b=b)
Inherit2()
它会输出:
INHERIT2
INHERIT1
BASE
5
6
但是我想绕过Inherit1的构造函数,即输出
INHERIT2
BASE
5
6
有没有办法这样做?
编辑我无法更改Base / Inherit1,我只能编辑Inherit2。
答案 0 :(得分:1)
编辑:当我们有一个非常简单的解决方案时,我们都会感到难过。
如此调用超级变更super(Inherit2, self)
至super(Inherit1, self)
class Inherit2(Inherit1):
def __init__(self, a=5, b=5):
print "INHERIT2"
super(Inherit1, self).__init__(a=a, b=b)