Sto eseguendo il debug di un codice e voglio scoprire quando si accede a un particolare dizionario. Bene, in realtà è una classe che sottoclasse dict
e implementa un paio di funzionalità extra. Comunque, quello che vorrei fare è sottoclasse dict
me stesso e aggiungere override __getitem__
e __setitem__
produrre un output di debug. In questo momento, l'ho fatto
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'
è una chiave che alla fine verrà impostata che voglio utilizzare per identificare l'output. Ho quindi cambiato la classe che sto strumentando in sottoclasse DictWatch
anziché dict
e ho cambiato la chiamata al superconstructor. Tuttavia, sembra che non stia succedendo nulla. Pensavo di essere intelligente, ma mi chiedo se dovrei andare in una direzione diversa.
Grazie per l'aiuto!