【发布时间】:2021-05-24 20:50:16
【问题描述】:
在 Python 3.7+ 中检查函数是否在 Python 类中定义的正确方法是什么。示例:
class A:
def fun1(self):
pass
def fun2():
pass
我想区分A.fun1 是在一个类中定义的,而fun2 不是。
【问题讨论】:
-
你是在问
magic(A.fun1)应该返回True和magic(fun2)应该返回False,对吧? -
这样做有什么意义?你想解决什么问题?
-
有inspect.ismethod 和inspect.isfunction。
ismethod应该在对象上调用。执行这些操作:print(inspect.ismethod(A().fun1), inspect.isfunction(A().fun1)); print(inspect.ismethod(fun2), inspect.isfunction(fun2)). -
@deceze 完全正确
-
@Arty 正如你所指出的,方法需要实例化类,这在某些情况下可能是不可能的、容易的或有副作用。
标签: python function class methods inspect