我读过《潜入Python》,在关于类的章节中,它给出了一个例子:
class FileInfo(UserDict):
"store file metadata"
def __init__(self, filename=None):
UserDict.__init__(self)
self["name"] = filename
作者接着说,如果要重写__init__
方法,必须用正确的参数显式调用父方法__init__
。
FileInfo
类有多个祖先类呢?
__init__
方法吗?
在需要继承的每个类中,可以在启动子类时运行需要初始化的每个类的循环…可以复制的示例可能更容易理解。。。
关于子类超类调用,这本书有点过时了。对于内置类的子类化来说,它也有点过时了。
现在看来:
注意以下几点:
我们可以直接对内置类进行子类划分,如
dict
、list
、tuple
等。函数
super
处理跟踪此类的超类并适当调用其中的函数。您没有真正的调用基类的
__init__
方法,但通常希望这样做,因为基类将在那里进行一些重要的初始化,而其他类方法需要在那里工作。其他方法则取决于你的意图。如果只想在基类行为中添加一些内容,则需要在自己的代码之外调用基类方法。如果要从根本上更改行为,则可能不会调用基类的方法并直接在派生类中实现所有功能。
相关问题 更多 >
编程相关推荐