Zuordnung externer Namen zu einem internen Format
Verfasst: Donnerstag 29. Juli 2010, 17:01
Guten Abend!
Ich habe bei einem aktuellen Projekt den Fall, dass ich aus verschiedenen externen Formaten lese, wobei die Bezeichner für die selben Informationen verschieden sind. Ich möchte nun besonders elegant in den Parser-Objekten die Zuordnung der jeweiligen Bezeichner zum internen Format vornehmen. Mein Ansatz ist nun, das interne Objekt wie folgt aufzubauen:Dies würde nun ermöglichen, in den Parser-Objekten entsprechend so vorzugehen:Somit wäre es möglich, für jeden Parser eine Zuordnung als Dictionary zu hinterlegen, und wenn man über die Bereiche iteriert und Informationen ausliest, simpel darauf zuzugreifen. Es würde natürlich die Möglichkeit bestehen, direkt auf Intern.__setattr__ zuzugreifen:Entsprechend würde Intern.__setitem__ entfallen. Ist dieses Vorgehen eurer Meinung nach so lesbar, pythonisch und sinnvoll? Wie würdet ihr das lösen, oder welche meiner Varianten würdet ihr bevorzugen?
Vielen Dank im voraus!
Ich habe bei einem aktuellen Projekt den Fall, dass ich aus verschiedenen externen Formaten lese, wobei die Bezeichner für die selben Informationen verschieden sind. Ich möchte nun besonders elegant in den Parser-Objekten die Zuordnung der jeweiligen Bezeichner zum internen Format vornehmen. Mein Ansatz ist nun, das interne Objekt wie folgt aufzubauen:
Code: Alles auswählen
class Intern(dict):
FOO, BAR = "var_a", "var_b"
def __init__(self):
self.var_a = True
self.var_b = False
return
def __setitem__(self, item, value):
self.__setattr__(item, value)
return
test = Intern()
test[Test.FOO] = "New Value"
Code: Alles auswählen
class Parser(object):
SECTIONS = {"extern_a": Intern.FOO, "extern_b": Intern.BAR}
def read(self):
store = Intern()
for extern, intern in Parser.SECTIONS.iteritems():
data = extern.upper() # Auslesen der Informationen etc. pp.
store[intern] = data
Code: Alles auswählen
class Parser(object):
SECTIONS = {"extern_a": Intern.FOO, "extern_b": Intern.BAR}
def read(self):
store = Intern()
for extern, intern in Parser.SECTIONS.iteritems():
data = extern.upper() # Auslesen der Informationen etc. pp.
store.__setattr__(intern, data)
Vielen Dank im voraus!