当前位置: 首页 > 知识库问答 >
问题:

我写的python单例 init会调用多次 如何解决?

申屠亦
2024-05-31

"init"输出三次

class ConfigLoader(object):    _instance = None    _lock = threading.Lock()    def __new__(cls, *args, **kw):        if cls._instance is None:            with cls._lock:                if cls._instance is None:                    cls._instance = object.__new__(cls)        return cls._instance    def __init__(self, config_file_name="config.json"):        print("init")        self.file_path = os.path.join(os.getcwd(), 'config', config_file_name)        self.json_data = Nonec1 = ConfigLoader(config_file_name="config.json")c2 = ConfigLoader()c3 = ConfigLoader()

共有1个答案

戚宏浚
2024-05-31

object.__new__

If __new__() is invoked during object construction and it returns an instance of cls, then the new instance’s __init__() method will be invoked like __init__(self[, ...]), where self is the new instance and the remaining arguments are the same as were passed to the object constructor.

构造了三次,__init__ 就会被调用三次。

 类似资料:
  • 我有一个会话作用域bean,它使用代理注入到单例bean中。 从单例bean中,我需要调用会话作用域bean的某个初始化方法,它需要单例bean作为参数。此外,我不能改变会话范围bean的来源。 为了详细说明这个情况: 单例bean是一个服务,会话范围bean是一个Vaadin4Spring事件总线,为此我需要调用方法。 似乎没有办法检查,如果我已经订阅,并且我不能在某个实例上两次调用订阅。 有没

  • 问题内容: 我目前正在通过Eclipse编写GWT应用程序。Eclipse用于开发,但是我使用m2eclipse插件和带有GWT插件的Maven pom.xml来构建和运行它。 当我需要调试应用程序时,我必须: 在Maven项目上调用“运行方式…”(通过m2eclipse)“ war:exploded gwt:debug”。这将启动GWT的应用程序服务器,并等待端口3408上的远程调试连接。需要等

  • 我使用java用cucumber/硒编写了不同的测试场景,通常我使用这样的标签从不同的功能文件运行测试-Dcucumber.options="src/test/Resources/step_definitions--tags@Tagname" 我想做的是在所有标记测试运行后关闭浏览器实例。我怎么能那样做?@AfterSuit没有帮助。

  • 问题内容: 我正在使用以下代码通过AJAX提交表单: 背景 我的PHP处理程序执行各种任务,然后发回响应。然后,我可以在成功或错误函数中执行某些操作。 我的问题 当用户双击表单的“提交”按钮时,将发生两次AJAX调用,这将导致我的PHP处理程序中的代码执行两次。 我的问题 如果用户双击提交,如何避免我的代码执行两次? 问题答案: 当AJAX调用再次出现时,请先禁用首次单击的“提交”按钮,然后重新启

  • 代码使用的官方示例代码,只保留了1条数据,并对其中一个字段使用了:formatter 执行结果 问题说明:刷新页面,1条数据打印了4次。 备注问题:如果列表数据是来自接口,在不刷新界面的情况下,多次调用接口,数据格式化次数是累加的~~~