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



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

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

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

除了查阅文档之外,没有办法分辨。没有编程方法来推断函数意图的作者。您始终可以从类中"直接"调用函数,只要传递所需的参数,请考虑:

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

但显然,作者的意思是speak是一个实例方法。

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

最新更新