You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何通过类访问方法时inspect.ismethod返回False?

为什么inspect.ismethod(Foo.bar)返回False?

先看你定义的类和执行的代码:

class Foo:
    def bar(self):
        print('bar!')

调用inspect.ismethod的结果:

>>> from inspect import ismethod
>>> ismethod(Foo.bar)
False

这是Python里函数和方法的本质区别导致的:

  • 直接访问Foo.bar时,它只是一个普通函数,还没有和任何类的实例绑定,inspect.ismethod只识别和实例绑定后的方法对象。
  • 只有通过类的实例去访问这个函数时,它才会被包装成绑定方法,这时ismethod才会返回True。

验证一下就能明白:

>>> from inspect import ismethod, isfunction
>>> # 直接取类的bar,属于普通函数
>>> isfunction(Foo.bar)
True
>>> # 实例化后取bar,才是绑定方法
>>> obj = Foo()
>>> ismethod(obj.bar)
True

说白了,Foo.bar本身是函数,和实例绑定后才叫方法,所以ismethod(Foo.bar)返回False是完全正常的。

内容的提问来源于stack exchange,提问作者kaya3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:55:53