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

为什么错了?

class Student(object):

def __init__(self,name,score):

self.name=name

self.__score=score

@property

def score(self):

return self.__score

@score.setter

def score(self,score):

if score<0 or score>100:

raise ValueError('invalid score')

self.__score = score

@property

def grade(self):

if score>=80:

grade=A

elif score>=60:

grade=B

else:

grade=C


>>> s = Student('Bob',69)

>>> print s.grade


Traceback (most recent call last):

  File "<pyshell#7>", line 1, in <module>

    print s.grade

  File "<pyshell#5>", line 15, in grade

    if score>=80:

NameError: global name 'score' is not defined


正在回答

2 回答

楼上说的不全对啊,除了self.score需要修改外你的语句if下面要有return值的


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

if score>=80:       改成 if self.score>=80

grade=A

elif score>=60:     ## elif self.score>=60    可能直接写score程序不识别啊

grade=B

else:

grade=C


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

举报

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

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

进入课程

为什么错了?

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