you can specifically make the required call using the syntax
Base.Foo(self)
in your case:
class Base(object):
This works because Python makes calls to related form methods.
instance.method(argument)
as if they were a call to an unrelated method
Class.method(instance, argument)
therefore, a call in this form gives the desired result. Inside methods, self is just an instance of a method call, i.e. Implicit first argument (explicit as parameter)
Note that if a subclass cancels Bar , then there is nothing (good) that you can effectively do AFAIK with it. But this is how everything works on python.
source share