我该如何理解" Bunch课程"在python?

时间:2014-07-23 06:02:47

标签: python

今天我从书中学到了一个束类。 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做了什么。

我应该如何理解?

2 个答案:

答案 0 :(得分:3)

您可以将dict.__init__视为字典构造函数。例如我可以写:

d = dict(a=1, b=2)

d = dict([('a', 1), ('b', 2)])

创建(初始化)字典{'a': 1, 'b': 2}。每当我编写这两个语句时,它都会调用dict.__init__,这就是添加ab项的工作。

以同样的方式,使用Bunch,它会导致所有关键字参数(或2个序列的可迭代)转换为字典子类(Bunch)中的键值对

答案 1 :(得分:1)

您无需确切知道dict__init__的具体内容。思考它的方法是dict.__init__做了使对象“像字典一样工作”所必需的东西。一般来说,当你进行子类化时,你需要调用超类__init__来使类“像它的超类一样工作”,并且在对像dict这样的内置类型进行子类化时也是如此。