Effective Pythonのメタクラスと属性 読書メモ Part2

遅延属性には__getattr__, __getattribute__, __setattr__を使う

Effective Pythonの読書メモです。
今回は、項目32について書いていきます。

 

遅延属性

Pythonで遅延属性を使用するには、 __getattr____setattr__が使用できます。

__getattr__

存在しない属性へアクセスした場合に実行されます。

__getattribute__

アクセス時毎回実行されます。

__setattribute__

アクセス時毎回実行されます。
存在しないプロパティでも値を上書きします。

 

__getattr__

まずは、__getattr__の挙動を見てみましょう。
存在しないプロパティにアクセスした際、__getattr__が呼ばれていることがわかります。

 

__getattribute__

 

参考にした記事

『Effective Python』Item 32: 属性の遅延評価には__getattr__, __getattribute__,__setattr__を使おう