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

这个任务的答案是什么意思?

直接把 lambda 函数赋值给 self.get_grade 和绑定方法有所不同,函数调用不需要传入 self,但是方法调用需要传入 self。

函数调用不需要传入 self,但是方法调用需要传入 self。这句话是什么意思?

正在回答

7 回答

print  p1.get_grade             

# =>   at 0x7fc09f505578>        #  p1.get_grade 调用的是函数,返回的是一个函数对象,不需要传入 self

print  p1.get_grade()

# =>   A               # p1.get_grade() 才是方法调用,返回的是函数返回的结果。self.get_grade = lambda: 'A’结果是:lambda 函数赋值给 self.get_grade,故方法调用需要传入 self得到函数返回的结果。

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

空城盼故人 提问者

不是太懂,print p1.get_grade() 这里也没有传入self啊?
2016-05-19 回复 有任何疑惑可以回复我~
#2

叫我磊磊就好 回复 空城盼故人 提问者

p1就相当于实例化的self
2016-09-08 回复 有任何疑惑可以回复我~

我也许懂楼主的问题了,是不是想问这句self.get_grade = lambda: 'A' 为什么让self.get_grade变成一个函数了。原因:lambda本身就是一个函数.这下懂了吧,相当于A=b() ,b是一个函数,A当然也是一个函数了

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

就和普通函数一样,不加括号变量名代表的是函数。而加了括号以后,就是在调用函数

而方法特殊的在于self参数的实例化调用

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

qq_永安卿_03794058

对,我和你的想法是一样的
2016-09-07 回复 有任何疑惑可以回复我~
#2

慕后端9788028

感觉就是这么一回事。
2016-12-19 回复 有任何疑惑可以回复我~

print  p1.get_grade() 这里其实是传入了p1作为self参数的,只是不是显式传入。

而没有括号只是 p1.get_grade 的话就只是一个函数名了,只代表一个函数

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

自问自答?也是蛮6的

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

空城盼故人 提问者

下面的是代码……问题里的……
2016-05-18 回复 有任何疑惑可以回复我~
class Person(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score
        self.get_grade = lambda: 'A'
p1 = Person('Bob', 90)
print p1.get_grade
print p1.get_grade()


0 回复 有任何疑惑可以回复我~
任务:由于属性可以是普通的值对象,如 str,int 等,也可以是方法,还可以是函数,大家看看下面代码的运行结果,请想一想 p1.get_grade 为什么是函数而不是方法:
class Person(object):    def __init__(self, name, score):        self.name = name        self.score = score        self.get_grade = lambda: 'A'p1 = Person('Bob', 90)print p1.get_gradeprint p1.get_grade()


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

空城盼故人 提问者

不好意思有点乱。看下面的吧
2016-05-14 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

这个任务的答案是什么意思?

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