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

发现一个问题,讲解中两种方法只是在set时做了限制,可是在定义实例时还是可以输入大于100的值啊?

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

s = Student('Bob',666)   #这里并没有限制,后面完全可以输出的啊?

print s._Student__score


正在回答

3 回答

是这样的,我也发现了,在那个初始化那里也加了这个报错判断……哈哈

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

set就是修改的时候运行的,实例的时候你要写在__init__里面

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

确实是个问题,那如此说来应该初始化当中也判断才对

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

举报

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

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

进入课程

发现一个问题,讲解中两种方法只是在set时做了限制,可是在定义实例时还是可以输入大于100的值啊?

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

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

帮助反馈 APP下载

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

公众号

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