Skipping a superclass
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sun Aug 2 08:36:41 EDT 2009
I have a series of subclasses like this:
class A(object):
def method(self, *args):
print "Lots of work gets done here in the base class"
class B(A):
def method(self, *args):
print "A little bit of work gets done in B"
super(B, self).method(*args)
class C(B):
def method(self, *args):
print "A little bit of work gets done in C"
super(C, self).method(*args)
However, the work done in C.method() makes the work done in B.method()
obsolete: I want one to run, or the other, but not both. C does need to
inherit from B, for the sake of the other methods, so I want C.method()
*only* to skip B while still inheriting from A. (All other methods have
to inherit from B as normal.)
So what I have done is change the call to super in C to super(B, self)
instead of super(C, self). It seems to work, but is this safe to do? Or
are there strange side-effects I haven't seen yet?
--
Steven
More information about the Python-list
mailing list