ich arbeite derzeit an einem einfachen XMLBuilder in Jython und finde keine Antwort auf ein Problem (Jython Buch befindet sich noch auf dem Postweg):
# so funzt es
b=XMLBuilder()
b.name={"person": "flintstone"}
:
:
# ich würde die Klasse aber lieber so nutzen
b={"name": {"person": "flintstone"}}
Gibt es dazu eine Lösung durch überladen von Operatoren o.ä?
Sorry, falls das nicht exact das richtige Forum für solche Fragen ist. Hier finde ich wenigstens meinen eigenen Thread wieder )
Frage bzgl. Python Syntax
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
depends on your class dude
Ein weg were das Ding mit einer fromdict methode auszustatten:
Verwende kannst du es dann so:
Und das hat nichts mit Operatorn Überladen zu tun.
Ein weg were das Ding mit einer fromdict methode auszustatten:
Code: Alles auswählen
class MyXMLBuilder(XMLBuilder):
@staticmethod
def from_dict(d):
res = self()
for key, value in d.iteritems():
setattr(res, key, value)
return res
Code: Alles auswählen
c = MyXMLBuilder.from_dict({'name': {'person': 'flintstone'}})
TUFKAB – the user formerly known as blackbird
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Um wieder zur semantischen Frage zurückzukommen: die Zuweisung kann man in Python nicht überladen, sie bedeutet, in der Abwesenheit von Punkten im Namen (also kein Attribut) immer das Setzen des entsprechenden Namens im momentanen Namespace. Auch wenn ein Attribut auftaucht bedeutet sie das, nur kann man bei einem "Unter-Namespace" wie zum Beispiel einer Klasse das __setattr__ abfangen.
--- Heiko.
--- Heiko.