返回信息流class Bunch(dict):
def __init__(self, **kwargs):
dict.__init__(self, kwargs)
self.__dict__ = self
请问以下,这个 self.__dict__ = self 怎么理解?
这是一条镜像帖。来源:北邮人论坛 / python / #253同步于 2014/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
问一个关于__dict__的问题
jessica1
2014/5/27镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
目的应该是更改或者绕过dict的一些属性吧
class Bunch(dict):
def __init__(self, **kwargs):
dict.__init__(self, kwargs)
self.__dict__ = self
if __name__ == '__main__':
b = Bunch()
b[1] = '1'
print b.__dict__
b['get'] = Bunch
print b.get()
输出:
{1: '1'}
{}
【 在 jessica1 的大作中提到: 】
: [code=py]
: class Bunch(dict):
: def __init__(self, **kwargs):
: ...................
https://docs.python.org/3/reference/datamodel.html#objects-values-and-types
在这一页上搜“__dict__“。比我想象的复杂,一言难尽的样子。
简单说就相当于实现了 __getattr__ __setattr__, 因为取属性如果没有被 __getattribute__ 拦截下来, 会优先从实例自己的 __dict__ 里取, 这样你的 Bunch 的实例可以使用 . 直接取值. 例如 b = Bunch(a=1, b=2), b.a #1, b.b #2, 当然你也可以b['a'] #1 b['b'] #2