/
ilya.petrash
/
SimplePyScripts
Обзор
Документация
Войти
/
ilya.petrash
/
SimplePyScripts
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
singleton__using_abc.py
37 строк
724 B
gil9red
Refactoring. Using black code style
18 июн 2023, 16:41
18 июн 2023, 16:41
efaef6c
Код
Авторство
О чём код?
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = "ipetrash" # SOURCE: https://stackoverflow.com/a/39186313/5909792 from abc import ABC def singleton(real_cls): class SingletonFactory(ABC): instance = None def __new__(cls, *args, **kwargs): if not cls.instance: cls.instance = real_cls(*args, **kwargs) return cls.instance SingletonFactory.register(real_cls) return SingletonFactory if __name__ == "__main__": @singleton class MyClass: pass x1 = MyClass() x2 = MyClass() x3 = MyClass() print(id(x1), id(x2), id(x3), id(MyClass.instance)) assert id(x1) == id(x2) == id(x3) == id(MyClass.instance)