我的代码如下:
class A():
def something():
#Do something
class B(A):
def something():
super(B, self).something()
#Do something
class C(B):
def something():
if VeryRareSpecificCase:
super(super(C,self)).something()
else:
super(C, self).something()
#Do something
然而,它引发错误TypeError:必须是type,而不是super。
答案 0 :(得分:1)
如果您没有使用复杂的钻石继承,您可以使用这种方法跳过链中的父级:
class C(B):
def something(self):
if VeryRareSpecificCase:
super(B, self).something() # <-- note: B passed explicitly!
else:
super().something()
如果你真的只有C --> B --> A --> object
,如你的MCVE所示,这应该是安全的。但是,如果您有比这更复杂的事情,您必须直接使用mro并准确指定您需要手动执行的操作。