class BaseClass(object):

    def foo(self):
        return 'foo'

def bar(self):
    return 'bar'

def methods_implemented(self):
    """This doesn't work..."""
overriden = []
for method in ('foo', 'bar'):
    this_method = getattr(self, method).__func__
base_method = getattr(BaseClass, method).__func__
if this_method is base_method:
    overriden.append(method)
return overriden


class SubClass(BaseClass):

    def foo(self):
        return 'override foo'
o = SubClass()
o.methods_implemented()
How can a python base class tell whether a sub class has overridden its methods?