设计模式 - Python 的 property 修饰器并不是很好用?
PHP中文网
PHP中文网 2017-04-17 16:23:12
[Python讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
PHP中文网

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

迷茫

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

ringa_lee

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

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

另外 这一般不叫缓存 叫 memoization

PHPz

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号