M
Mac
I have a MixIn class which defines a method foo(), and is then mixed in
with another class by being prepended to that class's __bases__ member,
thus overriding that class's definition of foo(). In my application
though it is necessary for the MixIn's foo() to call the overridden
foo(). How can I do this?
My current hack is to do this:
def foo(): # MixIn's method
orig_bases = self.__class__.__bases__
bases = list(orig_bases)
bases.remove(OptEdgeCache)
self.__class__.__bases__ = tuple(bases)
foo_orig = self.foo
self.__class__.__bases__ = orig_bases
# other stuff here...
Is there a better way? Does the above even work as I think it does?
with another class by being prepended to that class's __bases__ member,
thus overriding that class's definition of foo(). In my application
though it is necessary for the MixIn's foo() to call the overridden
foo(). How can I do this?
My current hack is to do this:
def foo(): # MixIn's method
orig_bases = self.__class__.__bases__
bases = list(orig_bases)
bases.remove(OptEdgeCache)
self.__class__.__bases__ = tuple(bases)
foo_orig = self.foo
self.__class__.__bases__ = orig_bases
# other stuff here...
Is there a better way? Does the above even work as I think it does?