2024-06-01 20:00:22 发布
网友
我有一个名为EventManager的类,并在每个模块中调用这个类。我想在主文件中创建一个EventManager实例,并在每个模块中使用该实例。我的问题是:
你可以用单身汉。下面是一个简单的例子:
def singleton(cls): return cls() @singleton class EventManager: def __init__(self): self.events = [] def add_event(self, event): self.events.append(event) def print_events(self): print("Events : {}".format(self.events)) EventManager.add_event(0) EventManager.add_event(1) EventManager.add_event(2) EventManager.print_events()
输出:
请注意,当单例导入并在其他模块中使用时,一切仍按预期工作。在
编辑
你问:
The thing is that I initialize the class with a variable like EventManager(var), what shall I do in this case?
类将在其定义后立即实例化,即第一次导入包含EventManager的模块。由于EventManager是一个单例,我不认为用变量初始化单例是没有意义的。即使有可能:
EventManager
def singleton_with_args(*args, **kwargs): def wrapper(cls): return cls(*args, **kwargs) return wrapper @singleton_with_args(0) class EventManager: def __init__(self, first_event): self.events = [first_event] def add_event(self, event): self.events.append(event) def print_events(self): print("Events : {}".format(self.events)) EventManager.add_event(1) EventManager.add_event(2) EventManager.add_event(3) EventManager.print_events()
Events : [0, 1, 2, 3]
它很管用,但正如我所说,我觉得没用。您也可以使用方法或模块变量来初始化您的singleton。在
你可以用单身汉。下面是一个简单的例子:
输出:
^{pr2}$请注意,当单例导入并在其他模块中使用时,一切仍按预期工作。在
编辑
你问:
类将在其定义后立即实例化,即第一次导入包含
EventManager
的模块。由于EventManager
是一个单例,我不认为用变量初始化单例是没有意义的。即使有可能:输出:
它很管用,但正如我所说,我觉得没用。您也可以使用方法或模块变量来初始化您的singleton。在
相关问题 更多 >
编程相关推荐