【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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章