[Python-de] Warum doppelt...

Albert Hermeling Albert.Hermeling at t-online.de
Mit Feb 9 16:41:53 CET 2005


Hallo,

ich experimentiere gerade mit den neuen set() Klassen rum. Dabei ist mir 
aufgefallen das einige Methoden doppelt vorhanden sind. Ein Beispiel:

class Foo(set):
	def __init__(self):
		set.__init__(self)
	def __or__(self, x):
		print "Ich bin __or__"
		return set.__or__(self, x)
	def union(self, x):
		print "ich bin union"
		return set.union(self, x)

a = Foo()
a.update(range(0,10))
b = Foo()
b.update(range(5,15))

c = a | b
Ich bin __or__

d = a.union(b)
ich bin union

print c
foo([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
print d
foo([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

Hat das ein bestimmten Grund? Ist das etwa nur wegen der abwerts 
Kompatibilität? Wird das irgend wann geändert? Mir würde der jetzige Zustand 
gut passen. Den in einer abgeleiteten Klasse würde ich gerne die Methode 
__or__ Überschreiben und die Methode union so lassen und intern benutzen.

Schon mal danke im voraus.

mfg

Albert