@property和@方法名.setter
@property装饰一个类的方法,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。相当于把一个方法变成一个属性。
@方法名.setter,这个装饰器是表明被装饰的函数是被@property装饰的方法的设置形态。
class Student():
def __init__(self):
self._score = None
@property
def score(self):
return self._score
@score.setter
def score(self, value):
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
if __name__ == "__main__":
s = Student()
如:如果是赋值,会调用@方法名.setter修饰的函数,如果是使用,会调用@property修饰的函数。