2012-07-22 85 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的全部細節。

相關問題