【问题标题】:Why does object class does not allow attributes? [duplicate]为什么对象类不允许属性? [复制]
【发布时间】:2012-07-22 15:26:57
【问题描述】:

可能重复:
Can set any property of Python object

In [67]: obj = object()    
In [68]: obj.x = 42
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/user/<ipython-input-68-0203a27904ca> in <module>()
----> 1 obj.x = 42

AttributeError: 'object' object has no attribute 'x'    
In [69]: class myc(object):
   ....:     pass
   ....:     
In [70]: my = myc()    
In [71]: my.x = 42

看起来不一致。如何在不允许添加新属性的情况下使我的类类似于 object

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    大多数内置类型不允许自定义属性,因为这些属性会带来与每个实例关联的字典的开销。自定义类默认有这样一个字典(可以通过__dict__ 属性访问),但您可以通过添加来避免创建它

    __slots__ = []
    

    到类定义 - 请参阅documentation 了解完整详细信息。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2014-03-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2011-04-26
      相关资源
      最近更新 更多