3

可能重复:
可以设置 Python 对象的任何属性

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如何在不允许添加新属性的情况下使我的类类似于?

4

1 回答 1

2

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

__slots__ = []

到类定义——查看文档以获取完整的详细信息。

于 2012-07-22T15:29:08.627 回答