Can I find out (dynamically) where a method is defined?
Maric Michaud
maric at aristote.info
Mon Jun 9 12:01:25 EDT 2008
Le Monday 09 June 2008 17:28:45 allendowney at gmail.com, vous avez écrit :
> So, is there any way to inspect a method to see where (in what class)
> it
> is defined?
In [56]: class a(object) :
def a() : return
def b() : return
....:
....:
In [59]: class b(a) :
def b() : return
def c() : return
....:
....:
In [62]: i=b()
In [63]: for m in 'a', 'b', 'c' :
....: print [ t for t in type(i).mro() if m in dir(t) ]
....:
....:
[<class '__main__.a'>]
[<class '__main__.b'>, <class '__main__.a'>]
[<class '__main__.b'>]
mro stands for "method resolution order", check the reference on this
and "super", it worths the effort.
--
_____________
Maric Michaud
_____________
Aristote - www.aristote.info
3 place des tapis
69004 Lyon
Tel: +33 4 26 88 00 97
Mobile: +33 6 32 77 00 21
More information about the Python-list
mailing list