Seite 1 von 1

Dynamische Methoden/Attribute zur Laufzeit

Verfasst: Freitag 5. September 2008, 17:23
von burli
Hi,
ich möchte eine Klasse schreiben die zur Laufzeit eine XML Datei liest und aus einigen der Daten Methoden oder Attribute erstellt. Die Frage wird Gerold am ehesten verstehen ;)

Es geht um Mikrocontroller. So ein Mikrocontroller hat Funktionsregister die einen Namen und eine Adresse haben. Diese Daten stehen in der XML Datei.

Ich möchte nach dem Einlesen der XML Datei zb so etwas machen können:

Code: Alles auswählen

Mikrocontroller.Register=200
Der Wert soll später in die zum Register gehörenden Adresse geschrieben werden. Das gleiche soll auch umgekehrt gehen. Von Hand würde ich das hinbekommen, aber wie krieg ich das zur Laufzeit hin?

Verfasst: Freitag 5. September 2008, 18:40
von BlackJack
Mir ist irgendwie noch unklar was Du genau machen willst, darum nur die allgemeinen Hinweise auf `getattr()`/`setattr()` und die speziellen Methoden `__getattr__()` und `__setattr__()`.

Verfasst: Freitag 5. September 2008, 18:47
von burli
BlackJack hat geschrieben:Mir ist irgendwie noch unklar was Du genau machen willst...
Deshalb sagte ich, Gerold wird die Frage am ehesten Verstehen ;)

Um das zu erklären müsste ich weiter ausholen. Ich werde mir aber mal die Vorschläge anschauen und sehen ob ich damit was anfangen kann. Wenn nicht komm ich wieder ;)

Verfasst: Freitag 5. September 2008, 19:39
von burli
Ok, da bin ich wieder. Die Richtung dürte stimmen, ich bin mir nur noch nicht ganz klar ob das reicht. Deshalb möchte ich versuchen das anhand eines anderen Beispiels zu verdeutlichen das vielleicht geläufiger ist.

Angenommen ich hab eine Klasse "Internet" und eine XML Datei mit einer Liste mit mehreren Datensätzen "Webseite" und "IP". Ich möchte jetzt beim erstellen einer Instanz der Klasse Internet mitteilen welche XML Datei verwendet werden soll. Der Konstruktor soll die Datei auswerten.

Anschließen möchte ich eine Funktion aufrufen die irgendwas an die IP Adresse der angegebenen Webseite sendet, also in etwa so:

Code: Alles auswählen

Internet.Website="Hallo Welt!"
Es soll jetzt eine Funktion aufgerufen werden die "Hallo Welt!" an die IP Adresse von "Website" sendet. Ich hoffe das macht's deutlicher

Verfasst: Freitag 5. September 2008, 19:52
von HWK
Ganz habe ich es auch nicht verstanden. Könnten evtl. Properties das sein, was Du suchst. Siehe: property().
MfG
HWK

Verfasst: Freitag 5. September 2008, 20:22
von burli
Ja, irgendwas aus setattr() und property(). Ich komm nur nicht dahinter wie.

Ich versuche es mal weiter zu verdeutlichen.

Datei "deutscheseiten.xml"
<root>
<heisede>
<ip>123.45.67.89</ip>
</heisede>
<sportde>
<ip>98.76.54.321</ip>
</sportde>
.
.
.
</root>
Weiterhin habe ich die Klasst "Internet". Ich möchte jetzt eine Instanz davon erstellen

web = Internet("deutscheseiten.xml")
web.heisede="Hallo Welt!"

Jetzt will ich "Hallo Welt! an 123.45.67.89 schicken

Verfasst: Freitag 5. September 2008, 21:03
von Leonidas
Du suchst ``__setattr__``.