首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何理解python中的"Bunch类“?

我应该如何理解python中的"Bunch类“?
EN

Stack Overflow用户
提问于 2014-07-23 06:02:47
回答 2查看 5.3K关注 0票数 1

今天,我从“Python算法”一书中学到了一堂课。

代码语言:javascript
复制
class Bunch(dict):
    def __init__(self, *args, **kwds):
        super(Bunch, self).__init__(*args, **kwds)
        self.__dict__ = self

但我不太明白第三行是做什么的:

代码语言:javascript
复制
super(Bunch, self).__init__(*args, **kwds)

我知道它会调用父类,并执行如下操作:

代码语言:javascript
复制
dict.__init__(self, *args, **kwds)

但是我不知道__init__函数对dict做了什么。

我该怎么理解呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-23 06:06:20

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

代码语言:javascript
复制
d = dict(a=1, b=2)

代码语言:javascript
复制
d = dict([('a', 1), ('b', 2)])

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

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

票数 4
EN

Stack Overflow用户

发布于 2014-07-23 06:05:04

您不需要确切地知道dict__init__是干什么的。考虑这个问题的方法是,dict.__init__做必要的事情,使对象“像一个小块一样工作”。通常,在子类中,您需要调用超类__init__来使类“像”它的超类那样工作,而当子类对诸如dict这样的内置类型进行子类分类时也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24902969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档