Меня путает классическая реализация шаблона Singleton. В большинстве статей следующая реализация Singleton упоминается как классическая
Код: Выделить всё
class Singleton(object):
name = None
@staticmethod
def instance():
if '_instance' not in Singleton.__dict__:
Singleton._instance = Singleton()
return Singleton._instance
s1 = Singleton().instance();
s2 = Singleton().instance();
assert s1 is s2
Другая реализация, на которую мне указали, — это
Код: Выделить всё
class Singleton(object):
_instances = {}
def __new__(class, *args, **kwargs):
if class not in class._instances:
instance = super().__new__(class)
class.__instances[class] = instance
return class._instances[class]
Подробнее здесь: https://stackoverflow.com/questions/523 ... -in-python
Мобильная версия