super() not a panacea?
Michele Simionato
michele.simionato at poste.it
Wed Feb 18 01:42:42 EST 2004
"Clarence Gardner" <clarence at netlojix.net> wrote in message news:<pan.2004.02.17.18.59.19.712556 at netlojix.net>...
> The super object is considered a solution to the "diamond problem".
> However, a problem comes up if that ultimate base class is also the base
> class for another which inherits from it and another independent base
> class also providing that method.
The solution I see is to introduce a placeholder base class Y
with a dummy "m" method on top of the hierarchy:
class Y(object):
def m(self):
pass
class A(Y):
def m(self):
super(A, self).m()
print ' A'
class B(A):
def m(self):
super(B, self).m()
print ' B'
class C(A):
def m(self):
super(C, self).m()
print ' C'
class D(B,C):
def m(self):
super(D, self).m()
print ' D'
class Z(Y):
def m(self):
print ' Z'
class X(A, Z):
def m(self):
super(X, self).m()
print ' X'
X().m()
D().m()
print X.mro()
print D.mro()
This is the easy solution. If you don't like it, let me know and I
will show you other possibilities.
Michele Simionato
More information about the Python-list
mailing list