区分绑定方法和函数
class Spam:
def doit(self, message):
print(message)
print(Spam().doit)
<bound method Spam.doit of <main.Spam object at 0x00000000006DD668>>
print(Spam.doit)
<function Spam.doit at 0x00000000006DBA60>
通过以上代码可以看出,使用实例调用方法会得到一个绑定方法,而通过类直接调用方法则会得到一个函数对象。
无绑定方法的使用:传入该类的实例作为第一个参数。如下所示
o = Spam()
t = Spam.doit
t(o, 'howdy')