检查函数是否是某个对象的方法

Rom*_*huk 12 python methods function

如何检查函数是否是某个对象的方法?

例如:

def check_method(f):
    ...

check_method(lambda x: x + 1)           # >>> False
check_method(SomeClass().some_method)  # >>> True
Run Code Online (Sandbox Code Playgroud)

我的'helloworld'示例中的方法中有一些特殊属性(例如'im_self','__ self__'等).我可以依靠它们还是有更好的方法?

Dav*_*nan 18

使用inspect.ismethod().

文件说明:

如果对象是用Python编写的绑定方法,则返回true.

这意味着它将按照您在Python中定义的类的方式工作.但是,对于内置类的方法list或在扩展模块中实现的类,它将返回False.


Rov*_*ion 5

也可以检查内置类型库中定义的类型

import types
isinstance(obj.method, types.MethodType) # True
Run Code Online (Sandbox Code Playgroud)