编辑:我正在使用 Python 3(有人问)。
我认为这只是一个语法问题,但我想确保我没有遗漏任何东西。请注意 Foo 和 Bar 如何实现的语法差异。他们实现了同样的目标,我想确保他们真的在做同样的事情。输出表明只有两种方法可以做同样的事情。是这样吗?
代码:
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):
X().some_method()
Y().some_method()
print("Foo.some_method called")
class Bar(X,Y):
def some_method(self):
X.some_method(self)
Y.some_method(self)
print("Bar.some_method called")
print("=== Fun with Foo ===")
foo_instance = Foo()
foo_instance.some_method()
print("=== Fun with Bar ===")
bar_instance = Bar()
bar_instance.some_method()
输出:
=== Fun with Foo ===
X.some_method called
Y.some_method called
Foo.some_method called
=== Fun with Bar ===
X.some_method called
Y.some_method called
Bar.some_method called
PS - 希望这是不言而喻的,但这只是一个抽象的例子,让我们不要担心为什么我想在两个祖先上调用 some_method,我只是想在这里理解语言的语法和机制。谢谢大家!