Durch Argumente iterieren...
Verfasst: Samstag 20. Oktober 2007, 17:39
Ich weiß nicht, wie ich das am besten beschreiben soll... Ich hab'ne Funktion, die heißt add_contact und erwartet eben eine bestimmte Anzahl von Argumente erwartet...
(Die Einrückung kommt davon, dass's aus einer Klasse kommt... Und ich könnte ja auch zum Beispiel adresses = self.root.find("adresses") benutzen, um zumindest den code nicht so gewaltig ausshen zu lassen, hab's aber absichtlich weggelassen, um die Redundanz zu verdeutlchen)
Wie ihr seht, ist da'ne Menge Redundanz zu sehen. Könnte ich irgendwie ein iterierbares Argument aufnehmen, bei dem trotzdem deutlich eine Unterscheidung zwischen first_name, last_name usw zu sehen ist?... *args wäre ja eine Möglichkeit, jedoch sieht man ja dann nicht, welche Elemente erwartet werden. Vielleicht kennt ja jemand'ne Möglichkeit...
(Ich hoffe ich hab's einigermassen gut beschrieben. Vielen dank im Vorraus!)
Code: Alles auswählen
def add_contact(self, first_name = "", last_name = "", adress = "",
birthday = "", email = "", telephone = ""):
try:
id = str(int(self.root[0][-1].get("id")) + 1)
except IndexError:
id = "0"
self.root.find("adresses").append(ET.Element("adress"))
self.root.find("adresses")[-1].attrib['id'] = id
self.root.find("adresses")[-1].append(ET.Element("first_name"))
self.root.find("adresses")[-1].find("first_name").text = first_name
self.root.find("adresses")[-1].append(ET.Element("last_name"))
self.root.find("adresses")[-1].find("last_name").text = last_name
self.root.find("adresses")[-1].append(ET.Element("adress"))
self.root.find("adresses")[-1].find("adress").text = adress
self.root.find("adresses")[-1].append(ET.Element("birthday"))
self.root.find("adresses")[-1].find("birthday").text = birthday
self.root.find("adresses")[-1].append(ET.Element("email"))
self.root.find("adresses")[-1].find("email").text = email
self.root.find("adresses")[-1].append(ET.Element("telephone"))
self.root.find("adresses")[-1].find("telephone").text = telephone
Wie ihr seht, ist da'ne Menge Redundanz zu sehen. Könnte ich irgendwie ein iterierbares Argument aufnehmen, bei dem trotzdem deutlich eine Unterscheidung zwischen first_name, last_name usw zu sehen ist?... *args wäre ja eine Möglichkeit, jedoch sieht man ja dann nicht, welche Elemente erwartet werden. Vielleicht kennt ja jemand'ne Möglichkeit...
(Ich hoffe ich hab's einigermassen gut beschrieben. Vielen dank im Vorraus!)