没有合适的资源?快使用搜索试试~ 我知道了~
重点,装饰器的作用是将封装类属性的方法get__attr和set_attr变化为属性进行操作盒处理,但是另外一点需要注意的是加了装饰器的方法名称和类中原是属性的名称不许相同。比如例子中的score和_score其实是不同的,只有如此,程序运行才能正常。 总之,装饰器目的在于让类的属性读写更为方便,代码更为简洁。
资源推荐
资源详情
资源评论
使用@property
重点,装饰器的作用是将封装类属性的方法 get__attr 和 set_attr 变化为属性进行操作盒处理,
但是另外一点需要注意的是加了装饰器的方法名称和类中原是属性的名称不许相同。比如例
子中的 score 和_score 其实是不同的,只有如此,程序运行才能正常。
总之,装饰器目的在于让类的属性读写更为方便,代码更为简洁。
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,
导致可以把成绩随便改:
s = Student()
s.score = 9999
这显然不合逻辑。为了限制 score 的范围,可以通过一个 set_score()方法来设置成绩,再通
过一个 get_score()来获取成绩,这样,在 set_score()方法里,就可以检查参数:
class Student(object):
def get_score(self):
return self._score
def set_score(self, value):
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
现在,对任意的 Student 实例进行操作,就不能随心所欲地设置 score 了:
>>> s = Student()
>>> s.set_score(60) # ok!
>>> s.get_score()
60
>>> s.set_score(9999)
Traceback (most recent call last):
...
ValueError: score must between 0 ~ 100!
但是,上面的调用方法又略显复杂,没有直接用属性这么直接简单。
有没有既能检查参数,又可以用类似属性这样简单的方式来访问类的变量呢?对于追求完美
的 Python 程序员来说,这是必须要做到的!
资源评论
crazypla
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功