Sto eseguendo il debug di alcuni codici e voglio scoprire quando si accede a un determinato dizionario. Bene, in realtà è una classe che sottoclasse dict
e implementa un paio di funzioni extra. Ad ogni modo, quello che mi piacerebbe fare è sottoclasse dict
e aggiungere l'override __getitem__
e __setitem__
per produrre un output di debug. In questo momento, hoCome sottoclasse correttamente dict e override __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'
è una chiave che finirà per essere impostato che voglio utilizzare per identificare l'uscita. Ho quindi cambiato la classe che sto strumentando alla sottoclasse DictWatch
anziché dict
e ho cambiato la chiamata al supercostruttore. Tuttavia, nulla sembra accadere. Pensavo di essere intelligente, ma mi chiedo se dovrei andare in una direzione diversa.
Grazie per l'aiuto!
Hai provato a utilizzare la stampa anziché il registro? Inoltre, potresti spiegare come si crea/si configura il registro? – pajton
Non 'dict .__ init__' prendi' * args'? –
Sembra un buon candidato per un decoratore. –