确定是否可以从类或实例中调用callable

时间:2019-04-04 16:35:38

标签: python python-3.x python-3.6

如何确定某个方法或函数或任何可调用对象可以原样调用或绑定到实例?

检查并不涵盖所有情况。即是绑定到实例还是类:

PY>inspect.ismethod(object.__subclasshook__)
False
PY>inspect.isfunction(object.__subclasshook__)
False

1 个答案:

答案 0 :(得分:0)

除查阅文档外,没有其他方法可说。没有任何编程方式可以推断函数 intent 的作者。只要传递必需的参数,就可以始终从类中“直接”调用函数,请考虑:

In [1]: class Foo:
   ...:     def speak(self):
   ...:         print('hello')
   ...:

In [2]: Foo().speak()
hello

In [3]: Foo.speak(None)
hello

但是显然,作者打算将speak用作实例方法。

我想您可以排除实例中可调用零参数的函数,但这对于类中的函数来说是非常不规则的情况(除非它实际上是staticmethod对象)

相关问题