最近看了一下python,学习了点基础。本文就是在学习python过程中的产物之一。一来作为笔记方便日后参阅,二来写出来分享给python初学者。由于笔者的工作语言是java,因此可能回经常将python于java比较。
一、property用途
有时候在写程序中某些变量是由特殊的范围值的,就好像people中的age属性:年龄一样,总不可能是负数的吧。那么就要对该变量进行检查。一般的做法就是在使用该变量之前检查一下是否在合理范围内,如果不在合理的范围内,就给出相应的提示,或抛出相关的错误。而另一种是在给该变量赋值之前进行相关检查,如果在合理范围内就对该变量赋值。
以上是两种常见的检查,今天要说的不是以上两种检查之一,而是赋值的时候检查。这样的写法很简单,无非是使用该变量的setter对变量赋值,相关的检查逻辑在settter。这样的做法不错,但是赋值过于麻烦,总要以这样的方式进行赋值:
people.setAge(60)
远没有以下这种赋值方法来得方便:
people.age=60
这种赋值不但方便而且简单明了。
但是说好的赋值的时候检查就做不到了,有没有一种方法可以既检查,赋值的时候又简单呢?
在python中有一种装饰器可以做到这种效果,该装饰器就是:
property
二、用法
property的用法很简单,也是基于getter和setter。
property可以将getter和setter转化成属性。
class People(object):
@property
def getAge(self):
return self.age
@age.setter
def setAge(self, age):
if age<0:
raise ValueError('age error!')
else:
self.age = age
在getter上加上property装饰器之后就可以直接以这种方式people.age获取age的值,settler的做法差不多只是装饰器的写法不一致而已将【变量名】.setter写在setter上面即可完成,从此设置age不用使用setter那么麻烦了,可以直接使用people.age=60这样的写法啦