Sto eseguendo il debug di un codice e voglio scoprire quando si accede a un particolare dizionario. Bene, in realtà è una classe che sottoclasse dicte implementa un paio di funzionalità extra. Comunque, quello che vorrei fare è sottoclasse dictme 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 DictWatchanziché dicte 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!