Python内置的@property装饰器就是负责把一个方法变成属性调用的
比如说我们隐藏了数据然后提供了一个查看属性的接口,当然接口函数中可以设置条件,这里简化下:
class Students:
def __init__(self, name, score):
self.__name = name
self.__score = score
# @property
def score(self):
print('分数是:%s'% self.__score)
# @score.setter
def set_score(self, new_score):
self.__score = new_score
s1 = Students('小明', 90)
s1.score()
分数是:90
不过分数是一个学生的数据属性,可不可以直接调用的时候直接这样:
s1.score
这时候@property派上用场了:
class Students:
def __init__(self, name, score):
self.__name = name
self.__score = score
@property
def score(self):
print('分数是:%s'% self.__score)
@score.setter
def score(self, new_score):
self.__score = new_score
s1 = Students('小明', 90)
s1.score
s1.score = 100
s1.score
# 分数是:90
# 分数是:100
这时候一个方法score()变成属性score调用的,不仅如此,还可以创建另一个装饰器@score.setter,可以直接赋值操作。