为了账号安全,请及时绑定邮箱和手机立即绑定

是这样理解吗..

lambda 这个应该是一个系统函数,self.get_grade()应该是一个方法(类内定义),对象实例化的时候操作把一个函数赋给了方法,所以这个方法最终指向了一个函数,是这样吗...

正在回答

4 回答

self.get_grade 是一个实例属性,只不过传给它的值是一个lambda,所以这使得这个对象是一个可调用对象,就像你声明了一个函数f(),然后把函数名f传给了self.get_rade,不要被self.get_grade()这种形式所误导,实例方法都是要在参数列表中明确给出self的。

2 回复 有任何疑惑可以回复我~

个人理解,方法是具体的,类似于实例,存在一个实例指向;函数是抽象的,类似于类。

0 回复 有任何疑惑可以回复我~
  1. 与类和实例无绑定关系的function都属于函数(function);

  2. 与类和实例有绑定关系的function都属于方法(method)。

具体来说:

在class外部定义的函数,都是函数,不是方法

在class内定义的普通方法,因为它是要面向将来实例化对象的,其实它就是一个实例方法。它属于method,是一个方法。

在class内定义的静态方法,它与任何对象都没有联系,等同于是在class外定义的function,它属于函数。

在class内定义的类方法,它第一个参数必须是cls,它与class本身是绑定关系,它属于方法。


9 回复 有任何疑惑可以回复我~
#1

1小马哥1

照你这么说,任务中的p1.get_grade 就是方法了(因为在class内部定义的),但是文章说p1.get_grade是函数。这不是矛盾吗?
2018-09-24 回复 有任何疑惑可以回复我~
#2

liujlb 回复 1小马哥1

在class内定义的方法,如果第一个参数不是cls,就与类无关,所以是函数,不是方法
2018-09-25 回复 有任何疑惑可以回复我~

self.get_grade = lambda: 'A'

Python将等号右边的值赋给左边 , self.get_grade本身只是个变量,但lambda函数赋给这个变量

即self.get_grade成为一个方法(类内函数),已经不是变量了 是函数,调用函数肯定无值,

调用函数值需要在函数后面加上()

6 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

是这样理解吗..

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信