python缓存装饰器,第二种方式(二)

来个简单的装饰器

 

复制代码
def cached_method_result(fun):
    """方法的结果缓存装饰器"""

    @wraps(fun)
    def inner(self, *args, **kwargs):
        if not hasattr(fun, 'result'):
            result = fun(self, *args, **kwargs)
            fun.result = result
            fun_name = fun.__name__
            setattr(self.__class__, fun_name, result)
            setattr(self, fun_name, result)
            return result
        else:
            return fun.result

    return inner
复制代码

 

使用方式:

class MongoMixin(object):
    @property
    @utils_ydf.decorators.cached_method_result
    def mongo_16_client(self):
        mongo_var = pymongo.MongoClient(app_config.connect_url)
        return mongo_var

 

无论怎么调用mongo_16_client这个属性,都不会多次连接。

 

posted @   北风之神0509  阅读(198)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2017-06-30 fiddler抓包,搞定接口
点击右上角即可分享
微信分享提示