タグ

2008年4月24日のブックマーク (1件)

  • __slots__ - やっとむでぽん

    クラス定義で、インスタンスに自由に変数を追加できなくするには、__slots__を指定する。使える変数名をリストで渡す。 >>> class Foo(object): ... __slots__ = ['foo'] ... >>> f = Foo() >>> f.foo = 10 >>> f.bar = 20 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Foo' object has no attribute 'bar' >>>不便になるだけなので、こんなことはしないほうがいいと思うが、やりたい場合もあるかも。 この機能はそもそも、メモリ節約のためにある。__slots__の指定がないと、インスタンスごとに変数を保存するためのdictが作られる*1。__slo

    __slots__ - やっとむでぽん