У меня есть класс Python 3, который в настоящее время является синглтоном, определенным с использованием @singleton
декоратора, но иногда ему нужно, чтобы не был синглтоном.
Вопрос: Можно ли сделать что-то похожее на передачу параметра при создании экземпляра объекта из класса, и этот параметр определяет, является ли класс одноэлементным или не одноэлементным?
Я пытаюсь найти альтернативу дублированиюкласс и делает его не единичным, но тогда у нас будет множество дублированного кода.
Foo.py
def singleton(cls):
instances={}
def getinstance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return getinstance
@singleton
Class Foo:
def hello(self):
print('hello world!')
FooNotSingleton.py
Class FooNotSingleton:
def hello(self):
print('hello world!')
main.py
from Foo import Foo
from FooNotSingleton import FooNotSingleton
foo = Foo()
foo.hello()
bar = FooNotSingleton()
bar.hello()