当前位置 : 主页 > 编程语言 > python >

对 python 中 @property 和计算属性的一点思考

来源:互联网 收集:自由互联 发布时间:2022-06-15
前言 python 中提供了​​@property​​装饰器,可以将一个成员函数变为成员变量来访问,之前只是觉得这东西应该就只是为了​​setter​​和​​getter​​而存在的,但是学了 Vue 的计算

前言

python 中提供了 ​​@property​​ 装饰器,可以将一个成员函数变为成员变量来访问,之前只是觉得这东西应该就只是为了 ​​setter​​ 和 ​​getter​​ 而存在的,但是学了 Vue 的计算属性后对这个装饰器有了新的见解。

计算属性

在 Vue 中提供了计算属性 ​​computed​​,避免在模板中写出很长的表达式。仔细想想,用了 ​​@property​​ 装饰器的方法不就是计算属性的 ​​get()​​ 吗,然后 ​​@property.setter​​ 不就是 ​​set()​​ 吗?有了 ​​get()​​ 之后,当一个变量发生变化时,计算属性也随之发生变化,这样在更新变量时没必要手动在代码中更新计算属性的值,代码看起来就更加简洁了。比如,有以下代码:

复制class ImageViewer:

def __init__(self):
self.imagePaths = ['キラキラ.png', '恋をしたのは.png']
self.index = 0

def next(self):
if self.index >= len(self.imagePaths)-1:
return

self.index += 1

def previous(self):
if self.index <= 0
return

self.index -= 1

@property
def imagePath(self):
return self.imagePaths[self.index]

有了 ​​@property​​ 之后,每次访问到的 ​​imagePath​​ 都会是最新的,没必要在 ​​next()​​ 方法和 ​​previous()​​ 中再写一行更新 ​​imagePath​​ 的代码,我们只需维护好 ​​index​​ 即可。

上一篇:基于Django的图书推荐管理系统(附源码)
下一篇:没有了
网友评论