Jojo Mwebaze wrote: > Is it possible to tell, from which class an method was inherited from. > take an example below > > class A: > def foo(): > pass > class B(A): > def boo(A): > pass > class C(B): > def coo() > pass > class D(C): > def doo() > pass > >>>> dir (D) > ['__doc__', '__module__', 'boo', 'coo', 'doo', 'foo'] > > Is there any method to tell me form which classes boo, coo, foo where > inherited from?
You can check the classes in method resolution order (mro): import inspect class A: def foo(self): pass def bar(self): pass class B(A): def bar(self): pass class C(B): def baz(self): pass for methodname in dir(C) + ["spam"]: for class_ in inspect.getmro(C): if methodname in class_.__dict__: print "%s.%s()" % (class_.__name__, methodname) break else: print "no attribute named %r found" % methodname _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor