SobesLab логотип SobesLab

Ответ

Несколько вариантов: 1) Использовать модуль – в Python модули по сути синглтоны (при втором импорте не создаются заново). 2) Внутри класса переопределить метакласс или __new__, чтобы при создании нового объекта возвращался уже существующий экземпляр. Например, сохранить единственный инстанс в атрибуте класса и в __new__ перед возвратом проверять, есть ли он. 3) Использовать декоратор (функцию-обертку), который кэширует результат вызова класса. В целом, паттерн Singleton в Python применяется реже, т.к. глобальные объекты легко реализуются без него.