Дано клас Python, який буде інстанціюватися лише один раз, тобто буде лише один об'єкт класу. Мені було цікаво, в яких випадках має сенс створити один екземпляр класу, а не працювати безпосередньо з класом.
Існує подібне питання , але воно має іншу спрямованість:
- йдеться про групування глобальних змінних та функцій у клас та
- Це не специфічно для Python. Останнє означає, що він не враховує той факт, що (в Python) класи теж є об'єктами.
ОНОВЛЕННЯ:
У Python я можу робити наступні дії як для класів, так і для об'єктів:
class A(object):
pass
A.some_state_var = True
# Then later
A.some_state_var = False
my_a = A()
my_a.some_state_var = True
# Then later
my_a.some_state_var = False
Тому я не бачу, як вибір між класом та екземпляром цього класу залежить від стану (в Python). Я можу підтримувати стан з будь-яким із двох.
Крім того, мотивація створити мій екземпляр класу / класу не полягає у виконанні вимоги Singleton.
Крім того, справа не стільки в створенні нового типу.
Мотивація полягає в групуванні пов'язаних коду та даних та наявності інтерфейсу до нього. Ось чому я спочатку моделював це як клас на діаграмі класів. Лише коли мова зайшла про реалізацію, я почав цікавитись, чи інстанціювати цей клас чи ні.