pythonの@property

616 ワード

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def 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
は1つのgetterメソッドを属性に変え、@propertyを加えるだけでよい.このとき、@property自体はもう1つの装飾器@scoreを作成する.setterは、setterメソッドを属性付与に変更することを担当し、制御可能な属性操作を持っています.読み取り専用プロパティを定義することもできます.getterメソッドのみを定義します.setterメソッドを定義しないのは読み取り専用プロパティです.