知らなかったのでメモ。
Pythonではデフォルトではオブジェクトのインスタンスの属性はdictを使って保存している。
この保存の仕方では、実行中に新たな属性を動的に設定できたりして良い。
だけど、少数の固定な属性を持つ小さなクラスを扱うときにはdictはメモリの無駄。
こういう時は__slots__
に属性の名前を記述することでメモリを節約したほうが良い。
class Image(object):
__slots__ = ['id', 'caption', 'url']
def __init__(self, id, caption, url):
self.id = id
self.caption = caption
self.url = url
self._setup()
# ... other methods ...