绑定方法

class Foo:
    def f(self):
        pass

m1 = Foo()
m2 = Foo()
print(Foo.f)  # <function Foo.f at 0x107513b70>
print(m1,m1.f)  # <__main__.Foo object at 0x109d51f60> <bound method Foo.f of <__main__.Foo object at 0x109d51f60>>
print(m2,m2.f)  # <__main__.Foo object at 0x109d51fd0> <bound method Foo.f of <__main__.Foo object at 0x109d51fd0>>

函数本身也是对象。f方法本质也是描述符,当调用m1.f的时候,函数的__get__方法返回的是绑定方法的对象;而Foo.f访问的时候,函数的__get__方法返回自身的引用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容