Container-Modul auslesen

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
m0ps1234
User
Beiträge: 40
Registriert: Freitag 13. März 2009, 08:57

Hallo zusammen,
ich wusste leider nicht genau, wonach ich suchen sollte, bzw ob der Begriff Container in diesem Zusammenhang richtig ist, aber ich habe mir ein Python Modul geschrieben, dass meine XML- Elemente und Attribute beinhaltet, um über dieses als Wurzelknoten meine weiteren Programme mit einheitlichen Variablen zu versorgen. Kurzes Beispiel meiner Schema.py:

Code: Alles auswählen

class XSD:

  RootElem = 'Wurzel'
  Child1Elem = 'KindEbene1'
  Child2Elem = 'KindEbene2'
  AttributName = 'name'
  AttributeType = 'type'

...usw

Jetzt bräuchte ich aber in meinem anderen Pythonmodul alle Variablen der Schema.py als Dictionary auf einmal. Wie stell ich sowas an? Gibt es eine Möglichkeit die Schema.py auslesen zu lassen und mir die Variablen als Dictionary zurückzugeben?

Grüße
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

import schema
schema.__dict__
oder

Code: Alles auswählen

import schema
dict([(key, getattr(schema, key)) for key in dir(schema)])
mit Dict Comprehensions

Code: Alles auswählen

import schema
{key : getattr(schema, key) for key in dir(schema)}
Bleibt noch die Frage nach dem "warum?" wenn das wirklich ein Schema fuer XML sein soll, warum nicht gleich ein XML-Schema?
Zuletzt geändert von cofi am Montag 11. Oktober 2010, 16:17, insgesamt 1-mal geändert.
BlackJack

@m0ps1234: Was ist denn der Sinn dieser Klasse? Kannst Du da nicht gleich ein Dictionary für schreiben?
m0ps1234
User
Beiträge: 40
Registriert: Freitag 13. März 2009, 08:57

Danke für die Antworten! Werde ich gleich mal ausprobieren.

Die Schema.py enthält einfach alle Elemente und Attribute als Strings, die in meinem xsdSchema definiert sind. Über diese Schema.py wird denn mittels Template und substitute das eigentliche xsdSchema aufgebaut. Zudem wird die Klasse noch in anderen Modulen verwendet, um bei if-Abfragen oder ähnlichem eine einheitliche Basisdatei für die ganzen Variablen zu besitzen.

EDIT: Hm, also hab das jetzt mal probiert mit den Vorschlägen von cofi. Jedoch bekomme ich irgendwie alle definierten Variablen (Von IOError bis BaseException bis...), außer die der Klasse XSD.
EDIT2: Ah, klappt doch. Danke!
BlackJack

@m0ps1234: Ich habe immer noch nicht richtig verstanden wofür die Klasse benutzt wird, bzw. klingt das was ich glaube verstanden zu haben nach Klassenmissbrauch. Benutzt Du die *Klasse* als Container für "Variablen"? Sind da wirklich Namen drin mit bestimmten Präfixen die eine Bedeutung für das laufende Programm haben, also stecken tatsächlich *Daten* in den *Namen*!? Was für Methoden hat die Klasse?
Antworten