我觉得你们有的理解不对吧
这道题答案的意思是:
练习题中的 self.get_grade 是函数没错,是函数对象,而self.get_grade() 只是函数调用,不是什么方法。
方法指的是教程中的利用 types.MethodType 得到的self.get_grade,这才是方法,加括号就是方法调用
p1.get_grade = types.MethodType(fn_get_grade, p1, Person) print p1.get_grade()
所以很明显,方法与类有关,需要传入self (参照教程前半部分),而函数不用传入self
练习题中的self.get_grade() 并没有传入self(你自己到 lambda 后面加一个 self 参数,看看程序会不会报错就知道了),它只是一个简单的函数调用
所以区分方法和函数,就看需不需要传入self (加括号只是代表调用罢了。。)
(以上均为个人观点,如有误,麻烦大佬指出)