AI智能
改变未来

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


前言

python 中提供了

@property

装饰器,可以将一个成员函数变为成员变量来访问,之前只是觉得这东西应该就只是为了

setter

getter

而存在的,但是学了 Vue 的计算属性后对这个装饰器有了新的见解。

计算属性

在 Vue 中提供了计算属性

computed

,避免在模板中写出很长的表达式。仔细想想,用了

@property

装饰器的方法不就是计算属性的

get()

吗,然后

@property.setter

不就是

set()

吗?有了

get()

之后,当一个变量发生变化时,计算属性也随之发生变化,这样在更新变量时没必要手动在代码中更新计算属性的值,代码看起来就更加简洁了。比如,有以下代码:

class ImageViewer:def __init__(self):self.imagePaths = [\'キラキラ.png\', \'恋をしたのは.png\']self.index = 0def next(self):if self.index >= len(self.imagePaths)-1:returnself.index += 1def previous(self):if self.index <= 0returnself.index -= 1@propertydef imagePath(self):return self.imagePaths[self.index]

有了

@property

之后,每次访问到的

imagePath

都会是最新的,没必要在

next()

方法和

previous()

中再写一行更新

imagePath

的代码,我们只需维护好

index

即可,以上~

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 对 python 中 @property 和计算属性的一些思考