gpt4 book ai didi

python - 从基类调用派生类中的重写方法

转载 作者:太空狗 更新时间:2023-10-29 20:52:56 37 4
gpt4 key购买 nike

我正在阅读有关 classes 的 Python 文档并遇到了我不确定的这一段:

Derived classes may override methods of their base classes. Because methods have no special privileges when calling other methods of the same object, a method of a base class that calls another method defined in the same base class may end up calling a method of a derived class that overrides it. (For C++ programmers: all methods in Python are effectively virtual.)

例子:

class A:
def foo(self):
self.bar()

def bar(self):
print "from A"

class B(A):
def foo(self):
self.bar()

def bar(self):
print "from B"

这是否意味着类 A obj = A() 的对象可以以某种方式最终打印“来自 B”?我读对了吗?如果这没有意义,我深表歉意。我对 python 如何处理继承和覆盖感到有点困惑。谢谢!

最佳答案

没有。父类(super class)不可能知道有关子类的任何信息。意思就是如果你实例化了子类B,它继承了一个方法foo(),重写了一个方法bar(),那么当你调用foo (),它将调用 B 中的 bar() 定义,而不是 A 中的 bar() 定义。这不是父类(super class)编写者的意图 -他希望对 bar() 的调用转到他自己的定义。

关于python - 从基类调用派生类中的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073720/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com