Как реализовать паттерн Singleton в Python?

Middle
313 просмотров
AFK Offer AI

Singleton гарантирует один экземпляр класса. Самый pythonic способ — модуль, он и так singleton. Через метакласс: __call__ проверяет, есть ли уже инстанс. Через __new__: if not hasattr(cls, "_instance"). Через декоратор: оборачиваешь класс, кешируешь инстанс. В многопоточной среде нужен threading.Lock. Но в Python чаще просто используют модульную переменную или Borg pattern (общий __dict__). Singleton считается анти-паттерном, если мешает тестированию.

Следующий вопрос

Что такое ndarray в NumPy?