2012-07-22 87 views
3

可能重复:
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而不允许添加新的属性?

回答

2

大多数内建类型不允许自定义属性,因为这些属性会与每个实例关联的字典的开销一起提供。自定义类在默认情况下(这是通过__dict__属性访问)这样一本词典,但你可以通过添加

__slots__ = [] 

类定义避免其创作 - 看documentation的全部细节。

相关问题