1. property函数
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改。为了限制属性的范围,可以通过一个setter
方法来设置属性,再通过一个getter
来获取属性,这样,在setter
方法里,就可以检查参数合理性,但是这样又略显复杂。那么,有没有一种简单的方法,可以实现书写简单有可以检查属性呢?
- 使用property([fget[, fset[, fdel[, doc ]]]])(私有变量)
class student:
def __init__(self):
self.__score = None
def getscore(self):
return self.__score
def setscore(self,value):
self.__score = value
def delscore(self):
del self.__score
qscore = property(getscore,setscore,delscore,"I'm the 'score' property.")
stu = student()
print 'student.score: %s' % stu.qscore
stu.qscore = 80
print 'student.score: %s' % stu.qscore
del stu.qscore
print 'student.score: %s' % stu.qscore
可以通过stu.qscore的方式,对score属性进行取值和赋值操作了
- @property,@对象.setter
class teacher: def __init__(self): self.__score = None @property def score(self): return self.__score @score.setter def score(self,value): self.__score = value @score.deleter def score(self): del self.__scoretch = teacher()print 'teacher.score: %s' % tch.scoretch.score = 60print 'teacher.score: %s' % tch.scoredel tch.scoreprint 'teacher.score: %s' % tch.score