python中property()方法的理解
property方法,一是让方法变成像类中的属性那样访问。第二个就是可以设置为可读写的属性。
property方法:
class property([fget[, fset[, fdel[, doc]]]])
- fget -- 获取属性值的函数
- fset -- 设置属性值的函数
- fdel -- 删除属性值函数
- doc -- 属性描述信息
python中使用property属性有两种方法。使用@property装饰器和使用property()函数。
class Student(object):
def __init__(self, score=0):
self._score = score
def get_score(self):
print("getting score")
return self._score
def set_score(self, value):
print("setting score")
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
def del_score(self):
print("delete score")
del self._score
score = property(get_score, set_score, del_score)#相当于定制一个接口
s = Student(60)
print(s.score)
print("=====================")
s.score = 88
print(s.score)
print("=====================")
del s.score
# 创建一个空的 property 对象
score = property()
# 绑定 getter
score = score.getter(get_score)
# 绑定 setter
score = score.setter(set_score)
#绑定del
score = score.del(del_score)
这四句相当于下面的一句
score = property(get_score, set_score, del_score)