Python 的 property 修饰器并不是很好用?

发布于 2022-09-01 21:09:41 字数 112 浏览 21 评论 0

我在用 Python 中的 property 修饰器的时候并没有发现特别实用,我在类中使用 property 修饰某个属性,之后多次调用该属性,发现这个函数会多次运行,并没有一个缓存或者保存的机制,大家这么看?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

活泼老夫 2022-09-08 21:09:41

这个不是用来做缓存的, 是为了你能够动态的获取某个属性,要缓存可以考虑用functool.lru 修饰器

初懵 2022-09-08 21:09:41

个人理解,修饰器是用来修饰的,修饰(约束)方法的行为。你可以以单例模式为例,看看修饰器方式的单例模式,这个修饰器就是对所修饰的方法说:“你,要满足我所约束的特点(这里就是指单例)。”

伏妖词 2022-09-08 21:09:41

那万一有些时候结果就是会不一样 那岂不是要哭

解决方法之一:
https://docs.python.org/3/library/functools.html#functools.lru_cache

另外 这一般不叫缓存 叫 memoization

一瞬间的火花 2022-09-08 21:09:41

property顾名思义只是类比于其他语言的OOP定义了一个数据访问接口而已,其本身并没有提供变量记忆机制。
至于你说的功能你可以自己实现,并不很难。参见django.utils的cached_property

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文