Funktionalität von Objekt erweitern

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
template
User
Beiträge: 29
Registriert: Mittwoch 21. November 2007, 09:44

Gibt es in Python eine saubere Lösung, um die Funktionalität von Python-Objekten zu erweitern wenn man auf den Typ der Konstruktion keinen Einfluss hat? Ungefähr so in der Art:

Code: Alles auswählen

from xml.etree import ElementTree
# ....
def SubFunc():
  result = ElementTree.XML(data)
  result.dump = lambda: ElementTree.dump(result)
  return result
  
def OtherFunc():
  result = SubFunc()
  result.dump()
BlackJack

@template: Allgemein, nein. Das scheitert schon daran das man nicht bei jedem Objekt Attribute setzen kann.

Man kann sich recht leicht Wrapper/Proxy-Objekte basteln die alle Attributzugriffe die das Objekt selbst nicht kennt an ein gekapseltes Objekte weiter reicht. Würde ich aber nur machen wenn das wirklich nötig ist, also in Deinem Beispiel nicht, denn dort könnte man in `other_func()` ja einfach die `dump()`-Funktion aufrufen, denn es ist bekannt/garantiert, dass die mit dem `result` funktioniert.
Antworten