"Janne Härkönen" <[EMAIL PROTECTED]> wrote:

> $ python
> Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
> [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> class X:
> ...   def x(self):
> ...    pass
> ...
>>>> class Y(X):
> ...   def y(self):
> ...    pass
> ...
>>>> y = Y()
>>>> y.x.im_class
><class __main__.Y at 0x7ff24bfc>
>>>> y.y.im_class
><class __main__.Y at 0x7ff24bfc>
> 
> What I would like to find out is the declaring class of method x, ie.
> class X How to do this ?
> 

For what it is worth, this should work for simple cases:

>>> def searchclass(K, name):
        for base in getattr(K, '__mro__', (K,)+K.__bases__):
                if name in base.__dict__:
                        return base

                
>>> searchclass(Y, 'y')
<class __main__.Y at 0x00C4FE40>
>>> searchclass(Y, 'x')
<class __main__.X at 0x00C4FE70>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to