Was ist performanteste Methode,um Item-Listener zu setzen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rezeptor
User
Beiträge: 8
Registriert: Dienstag 6. November 2007, 23:02

Guten Abend alle miteinander!

Ich beschäftige mich jetzt seit einigen Wochen mit Python, und muss sagen, dass ich mir eine Sprache noch nie so sympathisch war. :D Einfach genial!

Okay,nun zu meinen Anliegen:
  1. In DiveIntoPython nutzt der Autor in einem Beispiel die UserDict-Klasse. Habe ich es richtige verstanden, dass er auf das Ableiten der dict-Klasse nur verzichtet hat, weil das in älteren Python-Versionen noch nicht möglich war, und deswegen auch die UserDict-Wrapperklasse eingeführt wurde?
  • Ich habe eine Subklasse von dict. Nun möchte ich einen Listener auf die Keys setzen, die sich direkt im self-Objekt befinden, sodass also jedes mal, wenn sich der Wert eines Keys ändert, geprüft wird, welcher es ist, um dann bei besonderen Keys die Änderung "umzuleiten" (auf was auch immer).
    Bisher konnte ich es lösen, indem ich einfach die __setitem__ / __setattr__ überschrieben habe, und darin dann mit ein paar if-Conditions geprüft habe, ob die "besonderen" Keys dabei sind. Aber mir ist aufgefallen, dass die if-Abfragen dann bei wirklich allen änderungen durchlaufen werden. Gibt es da eventuell eine performantere/elegantere Möglichkeit, oder ist die Sache nicht sooo performancelastig?
Schon jetzt Danke für Eure Hilfe.

:peter
hast du python in der tasche,hast du immer was zum nasche...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Peter, willkommen im Forum,

*Ist* es denn bereits ein Performanceproblem?

Bei Objekten hast du beispielsweise `__getattr__` welches Attributzugriffe abfängt, wenn es kein solches Attribut gibt und `__getattribute__` welches immer bei Attributzugriffen aufgerufen wird.

Aber das ist dir vermutlich zu unspezifisch.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rezeptor
User
Beiträge: 8
Registriert: Dienstag 6. November 2007, 23:02

hallo leonidas,

Danke für die prompte Antwort.

Nein, zu performancelastig ist es definitiv noch nicht... :lol:
Ich habe mich halt nur gefragt, ob es da wohl elegantere Möglichkeiten gibt. Aber okay, dann muss ich mir da wohl keine weiteren Gedanken machen.


:peter
hast du python in der tasche,hast du immer was zum nasche...
Antworten