@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用
- 将方法转换为只读
- 重新实现一个属性的设置和读取方法,可做边界判定
class Money(object):
def __init__(self):
self.__money = 0
@property
def num(self):
return self.__money
@num.setter
def num(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型数字")
t = Money()
t.num = 100
print (t.num)
注意:@property放在哪个函数前面,这个函数就是getter,而且用的时候,就是这个函数名。如上例,就是num。
那么这个函数名.setter放在哪个函数前面,这个函数就是setter。如上例,就是@num.setter
所以你不要看我给Money类定义的时候是用了__money,为啥后面赋值和调用的时候用的都是num呢,这和setter、getter的函数设置有关。
网友评论