在set_score()方法里,可以检查参数,但是调用该方法略显复杂,有没有既能检查参数,又可以用类似属性这种简单的方法来访问类的变量呢
记得装饰器(decorator)可以给函数加上功能,对于类的方法,装饰器一样起作用,@property装饰器就是负责把一个方法变成属性调用的:
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
@property装饰器把getter方法变成属性