考虑:
class X:
def some_method(self):
print("X.some_method called")
class Y:
def some_method(self):
print("Y.some_method called")
class Foo(X,Y):
def some_method(self):
super().some_method()
# plus some Foo-specific work to be done here
foo_instance = Foo()
foo_instance.some_method()
输出:
X.some_method called
将 Foo 的类声明改为:
class Foo(Y,X):
将输出更改为:
Y.some_method called
如果我想调用两个祖先方法,我可以将 Foo 的实现更改为:
def some_method(self):
X().some_method()
Y().some_method()
# plus some Foo-specific work to be done here
这引出了我的问题。有没有什么超级秘密的方法可以让 Python 在所有祖先上调用该方法,而无需我像代码一样明确地这样做,例如(我在这里编造了 all_ancestors 关键字 - 这样的事情真的存在吗?):
def some_method(self):
all_ancestors().some_method()
# plus some Foo-specific work to be done here
预期输出为:
X.some_method called
Y.some_method called