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

2024-09-28 22:21:16 发布

您现在位置:Python中文网/ 问答频道 /正文

如何确定某个方法、函数或任何可调用的对象可以按原样调用,或者是否绑定到实例

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

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

Tags: 对象实例方法函数pyfalseobject情况
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:16

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

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

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

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

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

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

相关问题 更多 >