any way to tell at runtime whether a callable is implemented in Python or C ?

Ian Kelly ian.g.kelly at gmail.com
Fri Sep 26 12:10:19 EDT 2014


On Fri, Sep 26, 2014 at 6:12 AM, Stefan Behnel <stefan_ml at behnel.de> wrote:
> Chris Angelico schrieb am 26.09.2014 um 10:42:
>> On Fri, Sep 26, 2014 at 5:47 PM, Wolfgang Maier wrote:
>>> is there any reliable and inexpensive way to inspect a callable from running
>>> Python code to learn whether it is implemented in Python or C before calling
>>> into it ?
>>
>> I'm not sure you can say for absolute certain, but the presence of a
>> __code__ attribute is strongly suggestive that there's Python code
>> behind the function. That might be good enough for your purposes.
>
> Cython implemented native functions have a "__code__" attribute, too. Their
> current "__code__.co_code" attribute is empty (no bytecode), but I wouldn't
> rely on that for all times either.

Meanwhile, Python classes and objects with __call__ methods have no
__code__ attribute.



More information about the Python-list mailing list