【发布时间】:2019-05-03 20:12:50
【问题描述】:
我正在阅读 python 3.7 文档。我对以下句子感到很困惑:
“派生类可能会覆盖其基类的方法。由于方法在调用同一对象的其他方法时没有特殊权限,因此基类的方法调用同一基类中定义的另一个方法可能最终会调用一个覆盖它的派生类的方法。(对于 C++ 程序员:Python 中的所有方法实际上都是虚拟的。)"
您能否给我看一个示例代码,说明“调用同一基类中定义的另一个方法的基类最终可能会调用覆盖它的派生类的方法。”? 这是我的理解:
class A:
def me(self):
print("This is A")
def idet(self):
self.me()
class B(A):
def me(self):
print("this is B")
a = A()
b = B()
b.me()
b.idet()
结果是
this is B
this is B
我不确定是不是这样。
最后一个问题是“Python 中的所有方法实际上都是虚拟的”是什么意思? (我熟悉Java但不熟悉C++)
【问题讨论】:
标签: python inheritance methods overriding