特性属性 @property

Posted zengsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特性属性 @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

输出结果:
[email protected]:~/zengsf/828$ python3 exercise828.py 
正在取值
59
正在取值
80

 



以上是关于特性属性 @property的主要内容,如果未能解决你的问题,请参考以下文章

区分元素特性attribute和对象属性property

属性(property)的特性(attribute)

特性属性 @property

区分元素特性attribute和对象属性property

Python的特性(Property)和描述符

Python的特性(property) (转)