我查看了这个帖子,但其中一些概念超出了我目前的水平。在 Python 2.x 中,callable()
存在内置方法;有没有一种简单的方法可以检查某些东西是否可以使用 Python 3 调用?
问问题
6295 次
3 回答
40
它回来了。Python 3.2 有callable()
; 不再需要使用不太方便的替代方案之一。
于 2012-04-06T15:43:39.850 回答
18
callable()
回到 Python 3.2。
如果您需要使用 Python 3.1(极不可能),那么除了检查之外,__call__
还有以下解决方案:
2to3 将 a
callable(x)
变为isinstance(x, collections.Callable)
六种用途
any("__call__" in klass.__dict__ for klass in type(x).__mro__)
即它
__call__
在基类中检查。这提醒我应该问本杰明为什么。:)
最后,您当然可以简单地尝试:
try:
x = x()
except TypeError:
pass
于 2010-12-08T05:33:48.527 回答
9
你可以这样做hasattr(object_name, '__call__')
。与 Python 2.x 不同,这适用于所有可调用对象,包括类。
于 2010-12-08T01:40:31.987 回答