2016-10-03 54 views
4

我试图理解下面的代码片段:含义类定义

class Config(dict): 
    def __init__(self): 
     self.__dict__ = self 

什么是线self.__dict__ = self的目的是什么?我想它会覆盖默认__dict__函数与一些简单地返回对象本身,但因为Config继承dict我还没有能够找到任何与默认行为的差异。

+1

因为它'dict'I继承不明白它是什么试图做... – MMF

回答

4

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

>>> c = Config() 
>>> c.abc = 4 
>>> c['abc'] 
4 
+0

我也测试了,这种行为需要自' .__ dict__ ='__init__'中的自我行(如果'Config'仅来自'dict',我得到'NameError'试图调用'c ['abc']')。 –

3

作为每Python Documentobject.__dict__是:

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

下面是示例例如:

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