我正在阅读“深入 Python”,并在关于类的章节中给出了以下示例:
class FileInfo(UserDict):
"store file metadata"
def __init__(self, filename=None):
UserDict.__init__(self)
self["name"] = filename
然后作者说,如果你想重写__init__
方法,你必须用正确的参数显式调用父__init__
。
- 如果那个
FileInfo
类有多个祖先类怎么办?- 我是否必须显式调用所有祖先类的
__init__
方法?
- 我是否必须显式调用所有祖先类的
- 另外,我是否必须对要覆盖的任何其他方法执行此操作?
最佳答案
这本书在子类-父类(super class)调用方面有点过时了。在子类化内置类方面也有点过时了。
现在看起来是这样的:
class FileInfo(dict):
"""store file metadata"""
def __init__(self, filename=None):
super(FileInfo, self).__init__()
self["name"] = filename
注意以下几点:
我们可以直接继承内置类,如
dict
、list
、tuple
等super
函数处理跟踪此类的父类(super class)并适本地调用其中的函数。
关于python - python中的继承和覆盖__init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/753640/