[Python-de] Datenmodell/struktur

Tobias Klausmann klausman at schwarzvogel.de
Sa Mai 31 14:07:12 UTC 2008


Moin,

ich hab die Erfahrung gemacht, dass es besser ist, etwas länger
über die verwendeten Datenstrukturen nachzudenken anstatt sich
den Kopf über den Code zu zerbrechen.

Allerdings habe ich jetzt ein Problem, zu dem ich keine Lösung
finde, die mir 100% gefällt.

Zum Problem: ich muss in mehreren Kontexten Konfigurationen
anderer Programme parsen und/oder wegschreiben. Die sieht
typischerweise so aus:

define someobject {
	attribute_x  yes
	attribute_y  2220
	attribute_z  something with spaces
}

Es kommen auch verschachtelte Objekte vor, also so etwas:

define nesteobject {
	name foo
	style bar
	subobject barney {
		name rubble
		friend fred
	}
}

Wie stellt man so etwas geschickter Weise als Python-Objekt(e) dar.
Wenn barney kein eigenes Objekt ist, ist das kein Problem, die
Redundanz ist an dieser Stelle gering. Allerdings wäre mir
einfacher Zugriff auf die Attribute wichtig. "Einfach" vor allem
im Sinne von wenig Tipperei und leichter Lesbarkeit. Dabei kann
es vorkommen, dass nicht alle Attribute belegt sind - dann "None"
zu liefern statt eine Exception zu werfen ist vorzuziehen; ideal
wäre aber, das konfigurierbar zu machen.

Ich weiss, dass man die Attribute einfach in den Namespace eine
Klasse kippen könnte, aber da besteht natürlich die Gefahr, dass
das Attribut "foo" die Methode foo() übermalt - sehr unschön.

Wegschreiben der Objekte ist ja relativ einfach zu lösen, wobei
man dort natürlich aufpassen muss, dass nur die Attribute
ausgegeben werden, die relevant sind (die Methoden zB nicht).

Vorschläge?

Gruss,
Tobias


-- 
fs_dprintk (FS_DEBUG_INIT, "Ha! Initialized OK!\n");
        linux-2.6.6/drivers/atm/firestream.c