[Python-de] super() vs. self.__class__

Thomas Fanslau tfanslau at gmx.de
Wed Sep 4 13:22:19 EDT 2002


(Ich teile die Antwort mal in zwei Teile)

Martin v. Loewis schrieb:
 > Thomas Fanslau <tfanslau at gmx.de> writes:
 >> [Schnipp]
 >>dann wird nur die ERSTE gefundene Funktion aufgerufen.
 >
 > Richtig. Allerdings verwendest Du super() hier falsch; richtig lautet
 > es
 >
 > class D(B, A):
 > 	def save(self):
 > 		super(D, self).save()
 > 		print "d"
 >
 > Wenn super normalerweise self.__class__ benutzen soll, dann wäre das
 > erste Argument gar nicht erforderlich - super könnte self.__class__ ja
 > gut selbst ausrechnen.

Genau das ist doch einer der Punkte. Es macht hier gar keinen Sinn 
super(D,..) aufzurufen. Wenn ich die Klasse später beim refactoring 
umbenenne muss ich auch alle super()-aufrufe händisch ändern. Mit 
"self.__class__" kann ich mir das sparen, aber dann hätte sich super() 
dieses Argument auch selber holen können bzw. es als Default-Argument 
verwenden können. So macht es keinen Sinn.

> Ciao,
> Martin





More information about the Python-de mailing list