今天我从书中学到了一个束类。 Python算法>
class Bunch(dict):
def __init__(self, *args, **kwds):
super(Bunch, self).__init__(*args, **kwds)
self.__dict__ = self
但我不太了解第三行的作用:
super(Bunch, self).__init__(*args, **kwds)
我知道它会调用父类,并执行以下操作:
dict.__init__(self, *args, **kwds)
但我不知道__init__函数对dict做了什么。
我应该如何理解?
答案 0 :(得分:3)
您可以将dict.__init__
视为字典构造函数。例如我可以写:
d = dict(a=1, b=2)
或
d = dict([('a', 1), ('b', 2)])
创建(初始化)字典{'a': 1, 'b': 2}
。每当我编写这两个语句时,它都会调用dict.__init__
,这就是添加a
和b
项的工作。
以同样的方式,使用Bunch
,它会导致所有关键字参数(或2个序列的可迭代)转换为字典子类(Bunch
)中的键值对
答案 1 :(得分:1)
您无需确切知道dict__init__
的具体内容。思考它的方法是dict.__init__
做了使对象“像字典一样工作”所必需的东西。一般来说,当你进行子类化时,你需要调用超类__init__
来使类“像它的超类一样工作”,并且在对像dict这样的内置类型进行子类化时也是如此。