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__
方法返回自身的引用
网友评论