クラス内の辞書としてパラメーターのリストを作成しようとしています。データの性質上、一部のパラメーターは他のパラメーターから派生していますが、頻繁に使用されるため、派生をパラメーター ディクショナリ内に保持することをお勧めします。辞書に直接名前を付けることができる場合は正常に機能する自己参照辞書をまとめることができましたが、それはクラスの一部であり、多くの異なるファイルに実装される可能性があるため、それを実現するのに苦労しています自分自身に名前を付ける。
class foo:
class ParamDict(dict):
def __getitem__(self, key):
val = dict.__getitem__(self, key)
return callable(val) and val() or val
params = ParamDict({
'a': 5,
'b': lambda: 2**self['a']
})
if __name__ == '__main__':
X = foo()
Y = foo()
Y.params['a'] = 3
print X.params['a'], X.params['b']
print Y.params['a'], Y.params['b']
ラムダ関数がどこから呼び出されるかわからないため、辞書への参照を与える方法がわからないため、残念ながらgetitem定義から「自己」を取得していないようです。助言がありますか?