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

Python中对象.方法的取值问题:实例方法绑定差异解析

Python实例方法访问的本质与绑定机制

1. <object name>.<method name> 的值是什么?

通过实例访问类中定义的方法时,得到的是**绑定方法(bound method)**对象。这个对象会把当前实例和类的原始函数绑定在一起,调用它时会自动将实例作为第一个参数(也就是self)传入原始函数。

2. 代码里的foobar1和foobar2具体是什么?

foobar1 = foo1.bar 生成的是绑定了foo1实例的bar方法对象,foobar2 = foo2.bar 则是绑定了foo2实例的bar方法对象。它们不是类里定义的原始Foo.bar函数,而是包裹了实例和原始函数的独立对象。

3. 为什么print(foobar1 is foobar2)输出False?

每个绑定方法都是单独创建的对象,它们绑定的实例(foo1和foo2)是不同的——哪怕关联的是同一个类函数,这两个绑定方法在内存中也是不同的实体,所以用is判断对象身份时返回False。

验证与原始函数的关联

如果想确认这两个绑定方法确实关联同一个类函数,可以通过绑定方法的__func__属性验证:

print(foobar1.__func__ is foobar2.__func__)  # 输出True
print(foobar1.__func__ is Foo.bar)           # 输出True

这说明它们的底层逻辑确实是同一个类函数,但因为绑定了不同实例,所以本身是不同的绑定方法对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:05:12