Umgang mit langen Argumentendictionaries in Funktionen
Verfasst: Dienstag 1. März 2005, 13:50
Hi
hat jemand eine elegantere Lösung für folgendes Problem als ich? Meine finde ich nämlich reichlich umständlich ...
Ich möchte eine Klasse initialisieren mit vielen Attributen. Nur eines muß (!) gegeben werden, alle anderen sind optional. Im Grunde ähnelt dieses Problem dem einem gewöhnlichen Funktionsaufrufes mit vielen optional Argumenten.
Meine Lösung (in Pseudo-Code):
Das macht für eine lange Liste von möglichen Argumenten ziemlich viele Zeilen Code. Oder kennt jemand eine Alternative?
Vielen Dank für jeden Tipp,
Christian
hat jemand eine elegantere Lösung für folgendes Problem als ich? Meine finde ich nämlich reichlich umständlich ...
Ich möchte eine Klasse initialisieren mit vielen Attributen. Nur eines muß (!) gegeben werden, alle anderen sind optional. Im Grunde ähnelt dieses Problem dem einem gewöhnlichen Funktionsaufrufes mit vielen optional Argumenten.
Meine Lösung (in Pseudo-Code):
Code: Alles auswählen
def __init__(self,data,**keywords):
possible_keys = ['name','meta','minimum','maximum',...]
keys = keywords.keys()
#teste ob nur erlaube Schüssel verwendet werden
for kw in keys:
if kw not in possible_keys:
raise KeyError: "description"
#hier mein eigendliches Problem: muß ich wirklich jeden Schlüssel testen?
if kw = 'name': self.name = keywords[kw]
elif kw = 'meta' : self.meta = keywords[kw]
...
#und anschließend die default-Werte setzen?
try: self.name
except: self.name = None
try: self.meta
except: self.meta = None
#und dann erst das Handling des eigentlichen Datensatzes:
try: self.data = #irgendwas mit Numarray ...
Vielen Dank für jeden Tipp,
Christian