Finding in which class an object's method comes from
dieter
dieter at handshake.de
Fri Feb 5 02:52:04 EST 2016
More information about the Python-list mailing list
Fri Feb 5 02:52:04 EST 2016
- Previous message (by thread): Finding in which class an object's method comes from
- Next message (by thread): How this C function was called through ctypes this way?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"ast" <nomail at invalid.com> writes: > Suppose we have: > > ClassC inherit from ClassB > ClassB inherit from ClassA > ClassA inherit from object > > Let's build an object: > > obj = ClassC() > > Let's invoke an obj method > > obj.funct() > > funct is first looked in ClassC, then if not found > on ClassB, then ClassA then object In Python 2, I am using the following function to find out such information. from inspect import getmro def definedBy(name, class_): '''return *class_* base class defining *name*. *class_* may (now) also be an object. In this case, its class is used. ''' if not hasattr(class_, '__bases__'): class_ = class_.__class__ for cl in getmro(class_): if hasattr(cl,'__dict__'): if cl.__dict__.has_key(name): return cl elif hasattr(cl, name): return cl return None (Unlike other approaches reported in this thread) it not only works for methods but also for other attributes. I am using this for (interactive) debugging purposes: usually, I work with Zope/Plone which is a huge software stack and their it is handy to be able to quickly find out where something is defined in the code.
- Previous message (by thread): Finding in which class an object's method comes from
- Next message (by thread): How this C function was called through ctypes this way?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list