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

2个装饰器函数名称为什么不一样?

    @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


正在回答

2 回答

楼主可以把这种写法当成python的语法规范,比如为什么定义一个函数要用def,一样的道理。

property是“属性”的意思,@property就是把实例方法当做属性调用的语法。set是“设置”的意思,setter就是“设置器”。@score.setter就是给这个类下的score属性重新设定值的时候,调用这个方法。

按实际的用法,如果一个语句是s.score,就是要获取属性,所以python会直接找@property这个装饰器下面有没有score这个方法,有就直接调用了。如果另一个语句是s.score = 99,这就是要设置属性,python就会去找@score.setter这个装饰器,并运行下面的方法。

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

Jane_meng

@score.setter只是python的一种语法规范吗?我把它改了@score.set就不能用了
2019-03-27 回复 有任何疑惑可以回复我~

呵呵~ 按约定来,这就是一种规范。python才会自动去运作后面的。

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

1小马哥1 提问者

约定是什么? 在哪节课有讲?
2018-09-30 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

2个装饰器函数名称为什么不一样?

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