Ich möchte eine + = Notation für die Aktualisierung eines dict-like-Objekts in Python verwenden. Ich möchte dasselbe Verhalten wie die Methode dict.update haben. Hier ist meine Klasse (Wörterbuch mit Zugang ""):Überladung + = in Python für einen Mapping-Typ
class sdict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__= dict.__setitem__
__delattr__= dict.__delitem__
Ich habe versucht:
__iadd__ = dict.update
Und:
def __iadd__(self, other):
self.update(other)
return self
aber keines dieser Arbeit. (das erste zerstört das ursprüngliche Wörterbuch und das zweite erzeugt SyntaxError)
Aktualisierung:
Zweite Definition funktioniert tatsächlich. Es hat nicht funktioniert, weil ich def
vergessen habe. Der erste funktioniert nicht, da dict.update None zurückgibt.
Augh, es hat mich geschlagen! Hier, habe meine wertvollen +1 – Blender
Hoppla ... Das war blöd ... Danke für die Antwort! Jede Idee, warum '__iadd__ = dict.update' nicht funktioniert? – user1084871
'dict.update' return Keiner – Dikei