自我的意义.__ dict__ =在课堂定义中的自我

Kur*_*eek 12 python

我正在尝试理解以下代码片段:

class Config(dict):
    def __init__(self):
        self.__dict__ = self
Run Code Online (Sandbox Code Playgroud)

这条线的目的是self.__dict__ = self什么?我想它会__dict__使用简单地返回对象本身的东西来覆盖默认函数,但是由于ConfigdictI 继承而无法找到与默认行为的任何差异.

Dan*_*iel 7

分配字典self__dict__允许属性访问和项目访问:

>>> c = Config()
>>> c.abc = 4
>>> c['abc']
4
Run Code Online (Sandbox Code Playgroud)

  • 分配给`__dict__`总是一个坏主意。请不要。您可以通过“__setattr__”实现实际所需的行为,而不会产生所有其他副作用。 (2认同)

Moi*_*dri 5

根据Python文档object.__dict__是:

用于存储对象(可写)属性的字典或其他映射对象。

下面是示例示例:

>>> class TestClass(object):
...     def __init__(self):
...         self.a = 5
...         self.b = 'xyz'
... 
>>> test = TestClass()
>>> test.__dict__
{'a': 5, 'b': 'xyz'}
Run Code Online (Sandbox Code Playgroud)