总结:
1). Python内置的@property装饰器就是负责把一个方法变成属性调用的;
2). @property本身又创建了另一个装饰器@state.setter,负责把一个
setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作.
3). @property广泛应用在类的定义中,可以让调用者写出简短的代码,
同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
现在模拟一个借书系统,规定0是借出,1是未借出。但是若输入3-100程序不会报错,会导致借书状态错误。这时利用@property就可以解决这个问题。
设置 get_state获取状态、set_state检查状态、del_state删除状态。
from colorFont import *
class Book(object):
def __init__(self, name, kind, state):
self.name = name
self.kind = kind
# 0: 借出 1: "未借出"
# 书的状态只能是0或者1, 如果是其他, 应该报错;
# 查看书状态, 希望是汉字形式, 有实际意义的;
self.__state = 0 # 私有属性
@property # 将这个方法转换为类的属性; print(book.state)
def get_state(self):
if self.__state == 0:
return ERRRED + "借出"
elif