gpt4 book ai didi

python - python中的继承和覆盖__init__

转载 作者:IT老高 更新时间:2023-10-28 21:04:53 33 4
gpt4 key购买 nike

我正在阅读“深入 Python”,并在关于类的章节中给出了以下示例:

class FileInfo(UserDict):
"store file metadata"
def __init__(self, filename=None):
UserDict.__init__(self)
self["name"] = filename

然后作者说,如果你想重写__init__方法,你必须用正确的参数显式调用父__init__

  1. 如果那个 FileInfo 类有多个祖先类怎么办?
    • 我是否必须显式调用所有祖先类的 __init__ 方法?
  2. 另外,我是否必须对要覆盖的任何其他方法执行此操作?

最佳答案

这本书在子类-父类(super class)调用方面有点过时了。在子类化内置类方面也有点过时了。

现在看起来是这样的:

class FileInfo(dict):
"""store file metadata"""
def __init__(self, filename=None):
super(FileInfo, self).__init__()
self["name"] = filename

注意以下几点:

  1. 我们可以直接继承内置类,如dictlisttuple

  2. super 函数处理跟踪此类的父类(super class)并适本地调用其中的函数。

关于python - python中的继承和覆盖__init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/753640/

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