
Albert Hermeling wrote:
Deine Vorschlag die copy Methode zu überschreiben funktionierte nicht. Es reicht die Methode __or__ zu überschreiben. Wenn ich die copy Methode überschreiben bekomme ich immer ein None Objekt zurück. Da ich gerne dazu lerne würde ich gerne wissen warum das so ist.
Nach nochmaliger Betrachtung war dieser Punkt wohl ein Denkfehler meinerseits, aber None sollte deswegen trotzdem nicht rauskommen. Tatsächlich ist es nicht die Python-Methode copy(), sondern die dahinterliegende Funktion set_copy() in C, welche direkt aufgerufen wird. Damit bleibt das Überschreiben von copy() für deine Zwecke schlicht wirkungslos, und ich habe dich erst mal auf die falsche Fährte geschickt. Der ganze interne Aufwand scheint nur den einen Zweck zu haben, dass binäre Operatoren zwischen set und frozen_set jeweils ein neues Objekt vom Typ des linken Operanden zurückgeben können. Das ist zwar raffiniert, aber nicht allgemein genug gelöst, um für abgeleitete Klassen vernünftig nutzbar zu sein. Dass du dann mit c = a | b ein (nur halb initialisiertes) Newset kriegst, sieht eher nach einem unbeabsichtigten Nebeneffekt aus, der einem leicht zu falschen Schlüssen verleiten kann. So einfach ist es offenbar auch für die Core-Entwickler nicht, die Unterschiede zwischen eingebauten und in Python geschriebenen Klassen zu überbrücken... -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de