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

请教大佬这两种写法有哪些不一样

我的答案:

class Student(object):


    def __init__(self, name, score):

        self.name = name

        self.__score = score

        self.__grade


    @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 self.__score >= 80:

            self.__grade = 'A'

        elif self.__score >= 60:

            self.__grade = 'B'

        else:

            self.__grade = 'C'


s = Student('Bob', 59)

print s.grade


s.score = 60

print s.grade


s.score = 99

print s.grade

慕课答案:

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 self.score < 60:
           return 'C'
       if self.score < 80:
           return 'B'
       return 'A'
s = Student('Bob', 59)
print s.grade
s.score = 60
print s.grade
s.score = 99
print s.grade

主要区别在def grade(self):的定义不一样。


正在回答

4 回答

因为只做了赋值,并没有反馈信息回去

    def grade(self):

        if self.__score >= 80:

            self.__grade = 'A'

            return self.__grade 

        elif self.__score >= 60:

            self.__grade = 'B'

            return self.__grade 

        else:

            self.__grade = 'C'  

            return self.__grade   


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

 @property 修饰 grade 的 get 方法即可实现只读属性。这里是只读,并不能修改

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

应该是多了一层调用的关系

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

grade的判断是没有区别的,在ide里面可以试一下,两个都可以运行成功。

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

举报

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

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

进入课程

请教大佬这两种写法有哪些不一样

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号