You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中类实例对象的创建位置:以redisProducer为例

RedisProducer实例的最佳创建位置

针对你的代码场景,推荐按以下方式处理:

  1. 实例创建在if __name__ == "__main__"代码块内
    这里是脚本的入口点,只有当脚本直接运行时才会执行这块代码,避免模块被其他脚本导入时意外创建Redis连接实例,节省不必要的资源占用。

  2. 通过参数传递给main(),再由main()传递给foo()
    放弃全局变量的写法,通过参数传递能降低代码耦合度,同时大幅提升可测试性——比如写单元测试时,可以轻松传入Mock的RedisProducer实例,不用改动核心业务代码。

修改后的代码示例:

from redisUtil import redisProducer

def foo(redis_producer):
    redis_producer.get_data()
    ...

def main(redis_producer):
    while True:
        if # certain condition
            foo(redis_producer)
            ...

if __name__ == "__main__":
    redis_producer = redisProducer()
    main(redis_producer)

为什么不选其他方式?

  • 全局作用域创建实例:模块被其他脚本导入时会自动执行实例化逻辑,提前建立Redis连接,既浪费资源又可能引发意外的连接问题。
  • main()内部创建但用全局变量:全局变量会让代码耦合度变高,后续维护、测试都不方便,比如想替换实例时要修改全局变量,容易引发连锁错误。

内容的提问来源于stack exchange,提问作者TungTung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:45:46