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.)