Python 2:函数抽象类型

时间:2016-01-02 14:45:43

标签: python python-2.7 oop type-hinting

我有一个接受映射的函数,该映射可以是函数的字典,所以我需要区分它们。通常我使用collectionsisinstance / issubclass中的一些抽象基类来检查参数类型,但是函数没有ABC。我知道我可以hasattr(mapping, "__call__"),但我想知道是否有更具体的功能。

2 个答案:

答案 0 :(得分:2)

您可以使用Python 2.7和Python 3.2+中提供的callable(obj),但不能使用Python 3.0或Python 3.1。

您还可以使用types.FunctionType

isinstance(obj, types.FunctionType)

答案 1 :(得分:1)

您可以使用 types 模块,其中包括 FunctionType 定义的内容:

>>> import types
>>> types.FunctionType
<type 'function'>
>>> def foo(): pass
... 
>>> isinstance(foo, types.FunctionType)
True