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!)