Sop*_*hia 11 callable python-3.x
我查看了这个帖子,但有些概念高于我目前的水平.在Python 2.x中,callable()内置方法存在; 是否有一种简单的方法来检查是否可以使用Python 3调用某些内容?
Len*_*bro 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__)
Run Code Online (Sandbox Code Playgroud)
即它__call__在基类中检查.这让我想起我应该问本杰明为什么.:)
最后你当然可以尝试:
try:
x = x()
except TypeError:
pass
Run Code Online (Sandbox Code Playgroud)
你可以hasattr(object_name, '__call__')改为做.与Python 2.x不同,它适用于所有可调用对象,包括类.
| 归档时间: |
|
| 查看次数: |
6108 次 |
| 最近记录: |