Here is my guess, which doesn\'t work:
class BaseClass(object):
def foo(self):
return \'foo\'
def bar(self):
return \'bar\'
def m
Perhaps this?
>>> class BaseClass(object):
... def foo(self):
... return 'foo'
... def bar(self):
... return 'bar'
... def methods_implemented(self):
... """This does work."""
... overriden = []
... for method in ('foo', 'bar'):
... this_method = getattr(self, method)
... base_method = getattr(BaseClass, method)
... if this_method.__func__ is not base_method.__func__:
... overriden.append(method)
... return overriden
...
>>> class SubClass(BaseClass):
... def foo(self):
... return 'override foo'
...
>>> o = SubClass()
>>> o.methods_implemented()
['foo']
This checks whether the function objects behind the bound methods are the same.
Note, prior to Python 2.6, the __func__
attribute was named im_func
.