8

101 игра на python. Шпаргалки. Синглтон (Singleton) в Python

Серия Шпаргалки

В Python, синглтон – это шаблон проектирования, который гарантирует, что у класса будет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это значит, что при попытке создать новый объект этого класса, ты всегда будешь получать один и тот же объект.

Синглтоны полезны, когда нужно ограничить количество экземпляров класса, например:

  • Для управления подключением к базе данных (чтобы не открывать много подключений).

  • Для хранения глобальной конфигурации приложения (чтобы все части приложения использовали одну и ту же конфигурацию).

  • Для логгирования (чтобы все сообщения шли в один файл).

Преимущества синглтона:

  • Гарантия единственного экземпляра: Синглтон гарантирует, что класс будет иметь только один экземпляр. Это полезно для управления ресурсами, которые должны быть уникальными.

  • Глобальный доступ: Синглтон предоставляет глобальную точку доступа к экземпляру класса, что упрощает использование этого экземпляра в любой части программы.

Недостатки синглтона:

  • Глобальное состояние: Синглтон может привести к использованию глобального состояния, что может вызывать неожиданные побочные эффекты и усложнять тестирование.

  • Нарушение принципов ООП: Синглтон может нарушать принцип единственной ответственности и инкапсуляции.

Несколько способов реализации синглтона в Python.

1. Реализация Через переопределение метода __new__

  • Mетод __new__ отвечает за создание экземпляра класса. Переопределив его, я смогу контролировать этот процесс.

  • В этом примере я буду хранить единственный экземпляр класса в переменной _instance.

  • Если экземпляра еще нет, я его создам, иначе верну уже существующий экземпляр.

2. Реализация Через декоратор

  • Декоратор – это функция, которая модифицирует класс.

  • В этом примере я создаю функцию-декоратор singleton, которая принимает класс и возвращает его обернутую версию.

  • Внутри декоратора я храню экземпляры классов в словаре instances.

  • Если экземпляр класса еще не создан, я его создам и сохраню в словаре, иначе верну существующий экземпляр.

3. Реализация Через метакласс

  • Mетакласс позволяет контролировать создание классов.

  • В этом примере я создам метакласс SingletonMeta, который будет следить за созданием экземпляров.

  • Метакласс хранит экземпляры классов в словаре _instances.

  • При создании нового экземпляра, я проверяю, есть ли он уже в словаре, если нет – создаю, иначе возвращаю существующий экземпляр.

4. Реализация Через модуль

  • В Python модуль сам по себе является синглтоном.

  • Я могу создать объект в модуле, и он будет единственным экземпляром.

Когда использовать синглтон?

  • Когда тебе нужно, чтобы объект существовал в единственном экземпляре (например, конфигурация, логгер, подключение к базе данных).

  • Когда тебе требуется глобальный доступ к этому объекту.

Оригинала статьи в GIT

Другие шпаргалки:

Структуры данных в python
Переменные в python: что, как и зачем нужны
Строки в python
Функции в python

Серия 101 игра на python с разбором кода. Портирую классические игры на язык python с добавлением искусственного интеллекта.

Серия информатика, с изложением терминов

UPD:

КОД ПЕРЕЕХАЛ ПО ЭТОМУ АДРЕСУ

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества