当前位置:  开发笔记 > 编程语言 > 正文

如果对象是任何函数类型,是否有一种常见的方法来检查Python?

如何解决《如果对象是任何函数类型,是否有一种常见的方法来检查Python?》经验,为你挑选了2个好方法。

我在Python中有一个函数迭代从dir(obj)返回的属性,我想检查其中包含的任何对象是否是函数,方法,内置函数等.通常你可以使用callable()为此,但我不想包含类.到目前为止我提出的最好的是:

isinstance(obj, (types.BuiltinFunctionType, types.FunctionType, types.MethodType))

是否有更加面向未来的方法来进行此项检查?

编辑:我错过了之前我说:"通常你可以使用callable(),但我不想取消课程资格." 其实我想取消其参赛资格类.我想匹配函数,而不是类.



1> 小智..:

检查模块正是您想要的:

inspect.isroutine( obj )

仅供参考,代码是:

def isroutine(object):
    """Return true if the object is any kind of function or method."""
    return (isbuiltin(object)
            or isfunction(object)
            or ismethod(object)
            or ismethoddescriptor(object))


isroutine()为partials返回False.hasattr(obj,'__ call__')为partials返回True.

2> dF...:

如果要排除可能有__call__方法的类和其他随机对象,并且只检查函数和方法,则模块中的这三个函数inspect

inspect.isfunction(obj)
inspect.isbuiltin(obj)
inspect.ismethod(obj)

应该以面向未来的方式做你想做的事.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有