特性属性 @property

实现其它语言所拥有的 getter 和 setter 的功能

作用:
  用来模拟一个属性
  通过@property 装饰器可以对模拟属性的取值和赋值加以控制

class Student:
    def __init__(self, s):
        self.__score = s  # 私有属性,不让其它人任意修改成绩

    @property
    def getscore(self):
        '''取值实现getter方法'''
        print('正在取值')
        return self.__score

    @getscore.setter
    def setscore(self, v):
        '''实现设置者setter,对用户的赋值加以限制'''
        assert 0 <= v <= 100, '成绩不合法'
        self.__score = v


s = Student(59)
print(s.getscore)  # 希望有一个属能得到成绩
s.setscore = 80  # 通过s.score 来修改成功
print(s.getscore)  # 80

输出结果:
tarena@tedu:~/zengsf/828$ python3 exercise828.py 
正在取值
59
正在取值
80
原文地址:https://www.cnblogs.com/zengsf/p/9557429.html