Ich bin etwas Code debuggen und ich möchte herausfinden, wenn ein bestimmtes Wörterbuch zugegriffen wird. Nun, es ist eigentlich eine Klasse der Unterklasse dict
und implementiert ein paar zusätzliche Funktionen. Wie auch immer, was ich gerne tun würde, ist die Unterklasse dict
selbst und hinzufügen Override __getitem__
und __setitem__
, um einige Debugging-Ausgabe zu erzeugen. Gerade jetzt, ich habeWie dict und override richtig abgeleitet werden __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'
ein Schlüssel ist, die schließlich eingestellt werden, dass ich verwenden möchte, um die Ausgabe zu identifizieren. Ich habe dann die Klasse, die ich instrumentiere, in die Unterklasse DictWatch
anstelle von dict
geändert und den Aufruf des Superconstructors geändert. Trotzdem scheint nichts zu passieren. Ich dachte, ich wäre clever, aber ich frage mich, ob ich in eine andere Richtung gehen sollte.
Danke für die Hilfe!
Haben Sie versucht, Drucken statt Protokoll zu verwenden? Könnten Sie auch erklären, wie Sie Ihr Protokoll erstellen/konfigurieren? – pajton
Nimmt 'dict .__ init__' '' args' nicht an? –
Sieht ein bisschen wie ein guter Kandidat für einen Dekorateur aus. –