def detect_overridden(cls, obj):
    common = list(cls.__dict__.keys()) & list(obj.__class__.__dict__.keys())
diff = [m for m in common if cls.__dict__[m] != obj.__class__.__dict__[m]]
print(diff)

def f1(self):
    pass


class Foo:

    def __init__(self):
        detect_overridden(Foo, self)

def method1(self):
    print('Hello foo')
method2 = f1


class Bar(Foo):

    def method1(self):
        print('Hello bar')
method2 = f1
b = Bar()
f = Foo()
How to detect method overloading in subclasses in python?