Can I find out (dynamically) where a method is defined?
Gary Herron
gherron at islandtraining.com
Mon Jun 9 12:28:42 EDT 2008
Lie wrote:
> On Jun 9, 10:28 pm, allendow... at gmail.com wrote:
>
>> Hi All.
>>
>> In a complex inheritance hierarchy, it is sometimes difficult to find
>> where a
>> method is defined. I thought it might be possible to get this info
>> from the
>> method object itself, but it looks like maybe not. Here is the test
>> case I tried:
>>
>> class A(object):
>> def method():
>> pass
>>
>> class B(A):
>> pass
>>
>> a = A()
>> b = B()
>>
>> print a.method
>> print b.method
>>
>> Since B inherits method from A, I thought that printing b.method might
>> tell
>> me that the definition is in A, but no. Here's the output:
>>
>> <bound method A.method of <__main__.A object at 0xb7d55e0c>>
>> <bound method B.method of <__main__.B object at 0xb7d55e2c>>
>>
>> This in indistinguishable from the case where B overrides method.
>>
>> So, is there any way to inspect a method to see where (in what class)
>> it
>> is defined?
>>
You might try the inspect module. It can give you lots of information
about a method (even including the file name and line number where it
was defined). Poke around and perhaps you can find exactly what you are
looking for.
Gary Herron
More information about the Python-list
mailing list