私はいくつかのコードをデバッグしていて、特定の辞書がいつアクセスされるかを知りたいです。まあ、それは実際にはサブクラスでdict
あり、いくつかの追加機能を実装するクラスです。とにかく、私がやりたいのは、dict
自分自身をサブクラス化し、オーバーライド__getitem__
を追加__setitem__
して、デバッグ出力を生成することです。今、私は持っています
class DictWatch(dict):
def __init__(self, *args):
dict.__init__(self, args)
def __getitem__(self, key):
val = dict.__getitem__(self, key)
log.info("GET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
return val
def __setitem__(self, key, val):
log.info("SET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
dict.__setitem__(self, key, val)
'name_label'
は、出力を識別するために使用したい最終的に設定されるキーです。次に、インストルメントしているクラスをDictWatch
代わりにサブクラスにdict
変更し、スーパーコンストラクターへの呼び出しを変更しました。それでも、何も起こっていないようです。頭がいいと思っていたのですが、別の方向に進むべきかと思いました。
助けてくれてありがとう!