A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2013-February/123901.html below:

[Python-Dev] Why does Signature.from_function() have to check the type of its argument?

[Python-Dev] Why does Signature.from_function() have to check the type of its argument?Stefan Behnel stefan_ml at behnel.de
Fri Feb 8 22:14:28 CET 2013
PJ Eby, 08.02.2013 19:46:
> On Fri, Feb 8, 2013 at 10:54 AM, Stefan Behnel wrote:
>> Nick Coghlan, 08.02.2013 16:20:
>>> On Sat, Feb 9, 2013 at 1:06 AM, Benjamin Peterson wrote:
>>>> 2013/2/8 Stefan Behnel:
>>>>> I'm wondering about the purpose of this code in
>>>>> inspect.Signature.from_function():
>>>>>
>>>>> """
>>>>>     if not isinstance(func, types.FunctionType):
>>>>>         raise TypeError('{!r} is not a Python function'.format(func))
>>>>> """
>>>>>
>>>>> Is there any reason why this method would have to explicitly check the type
>>>>> of its argument? Why can't it just accept any object that quacks like a
>>>>> function?
>>>>
>>>> The signature() function checks for types.FunctionType in order to
>>>> call Signature.from_function(). How would you reimplement that?
>>
>> It should call isfunction() instead of running an explicit type check.
> 
> Isn't it possible now for an object to implement __instancecheck__ and
> claim to be an instance of FunctionType, anyway?  (For that matter,
> shouldn't there be some ABCs for this?)

Wow, good call. Providing an __instancecheck__() method that simply says
yes when it's asked for PyFunction_Type really works. Thanks!

Stefan


More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4