Estoy depurando un código y quiero saber cuándo se accede a un diccionario en particular. Bueno, en realidad es una clase que es una subclase dicte implementa un par de características adicionales. De todos modos, lo que me gustaría hacer es subclasificarme dicty agregar override __getitem__y __setitem__producir una salida de depuración. Ahora mismo, tengo
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'es una clave que eventualmente se establecerá y que quiero usar para identificar la salida. Luego cambié la clase que estoy instrumentando a subclase en DictWatchlugar de dicty cambié la llamada al superconstructor. Aún así, parece que no pasa nada. Pensé que estaba siendo inteligente, pero me pregunto si debería ir en una dirección diferente.
¡Gracias por la ayuda!