根据docs on inheritance人的说法:

派生类可以重写其基类的方法.由于方法在调用同一对象的其他方法时没有特权,因此调用同一基类中定义的另一个方法的基类的方法可能最终调用重写它的派生类的方法.

这是怎么发生的?有人能用一个简单的例子来说明这个概念吗?

推荐答案

以下是您要求的示例.这印chocolate张.

class Base:
    def foo(self):
        print("foo")
    def bar(self):
        self.foo()

class Derived(Base):
    def foo(self):
        print("chocolate")

d = Derived()
d.bar()  # prints "chocolate"

打印字符串chocolate而不是foo,因为Derived重写foo()函数.尽管bar()是在Base中定义的,但它最终调用foo()Derived实现,而不是Base实现.

Python-3.x相关问答推荐

循环遍历数据框以提取特定值

丢弃重复的索引,并在多索引数据帧中保留一个

从.csv导入将文件夹路径加入到文件名

在BaseHTTPRequestHandler中填充和返回列表

PANDAS中当前数据帧的匹配与更新

查找值始终为零的行 pandas

以特定方式重新排列 pandas 数据框的列

匹配语句NaN

我想使用命令提示符安装 cv2

使用gekko python的混合整数非线性规划

为什么 mypy 不适用于 sqlalchemy?

在气流中运行 DAG 时出现处理信号:ttou消息

在 Python 3.5 中使用 aiohttp 获取多个 url

Python:如何在三个列表中找到共同值

为什么 Django South 1.0 使用 iteritems()?

asyncio.Semaphore RuntimeError: Task got Future 附加到不同的循环

Python3 mysqlclient-1.3.6(又名 PyMySQL)的用法?

无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat

为什么中断比引发异常更快?

如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录?