AW: AW: [Python-de] dynamisch Methoden aufrufen
-----Ursprüngliche Nachricht----- Von: Ulrich Berning [mailto:ulrich.berning@t-online.de] Gesendet: Mittwoch, 12. November 2003 23:38 An: Rainer Fischbach Cc: Markus Jais; python-de@python.net Betreff: Re: AW: [Python-de] dynamisch Methoden aufrufen
Damit fällt die Vererbung dann unter den Tisch, da die Methoden der Superklassen nicht im __dict__ einer Klasse auftauchen. Dies gilt auch für:
getattr(c, name)(c)
Folgendes wird funktionieren:
getattr(C, name)(c)
besser wäre:
getattr(c.__class__, name)(c)
getattr(c, name)(c) funktioniert nicht deshalb nicht, weil getattr die Methode aus der Oberklasse nicht finden würde, sondern weil das die gebundene Methode liefert, die keine Ausprägung mehr als Parameter nimmt. Natürlich ist klar, dass getattr der einzig zuverlässige Weg ist, um unter Berücksichtigung der Vererbung dynamisch eine Methode zu finden - egal ob die gebundene aus der Ausprägung oder die ungebundene aus der Klasse, die man am sichersten über c.__class__ bekommt. Der Weg über __dict__ ist nur sinnvoll, wenn man genau weiß, um welche Klassen es geht und was dort genau definiert. Alles andere würde nur darauf hinauslaufen, getattr noch einmal zu schreiben. Sl, Rainer Rainer Fischbach Senior Consultant ECS Engineering Consulting & Solutions GmbH Mühlstraße 3 D-92318 Neumarkt Fon +49 9181 4764-84 Fax +49 9181 4764-50 email fischbach@ecs-gmbh.de http://www.ecs-international.de/ _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (1)
-
Rainer Fischbach