Python 的 property 修饰器并不是很好用?
我在用 Python 中的 property 修饰器的时候并没有发现特别实用,我在类中使用 property 修饰某个属性,之后多次调用该属性,发现这个函数会多次运行,并没有一个缓存或者保存的机制,大家这么看?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在用 Python 中的 property 修饰器的时候并没有发现特别实用,我在类中使用 property 修饰某个属性,之后多次调用该属性,发现这个函数会多次运行,并没有一个缓存或者保存的机制,大家这么看?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
这个不是用来做缓存的, 是为了你能够动态的获取某个属性,要缓存可以考虑用functool.lru 修饰器
个人理解,修饰器是用来修饰的,修饰(约束)方法的行为。你可以以单例模式为例,看看修饰器方式的单例模式,这个修饰器就是对所修饰的方法说:“你,要满足我所约束的特点(这里就是指单例)。”
那万一有些时候结果就是会不一样 那岂不是要哭
解决方法之一:
https://docs.python.org/3/library/functools.html#functools.lru_cache
另外 这一般不叫缓存 叫 memoization
property顾名思义只是类比于其他语言的OOP定义了一个数据访问接口而已,其本身并没有提供变量记忆机制。
至于你说的功能你可以自己实现,并不很难。参见django.utils的cached_property