【Python】装饰器@property使用

参考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017502538658208
https://www.cnblogs.com/yuncong/p/9562784.html

在类中使用,把类的一个方法定义成属性

1.首先定义一个类

class Student(object):
    def __init__(self,score):
        self._score = score

if __name__ == '__main__':
    s = Student(88)
    print(s._score)
    s._score = 99
    print(s._score)

运行结果:

88
99

2.实际上使用set_score等函数

因为实际的编程中,我们使用的是set_score以及get_score这样的函数来设置属性

class Student(object):
    def __init__(self,score):
        self._score = score

    def get_score(self):
        return self._score

    def set_score(self,value):
        if not isinstance(value, int):
            raise ValueError('score must be an integer!')
        if value < 0 or value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = value

3.需要更简单的方法

这里就可以借助property函数,将方法伪装成属性

class Student(object):
    def __init__(self,score):
        self._score = score

    #这个用于伪装
    @property
    def score(self):
        return self._score

    #这个用于设置伪装
    @score.setter
    def score(self,new_value):
        if not isinstance(new_value, int):
            raise ValueError('score must be an integer!')
        if new_value < 0 or new_value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = new_value
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章