If I have a class hierarchy in Python (we can assume there's no multiple inheritance), how can I find the class in which a method is defined? For example:
class C:
def f(): pass
class D(C):
def f(): pass
class E(D):
pass
If I call E().f(), this calls the method f that's defined in class D. Is there any way to get this information without calling the method, i.e:
assert get_defining_class(E, f) == D
One idea is to search each class in E.__mro__ for 'f' - would that work?
(This sounds like a duplicate of Find class in which a method is defined, but that question is about finding the defining class from within f itself.)