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 に答える