Найти в Дзене
1001 строк кода

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

В Python, синглтон – это шаблон проектирования, который гарантирует, что у класса будет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это значит, что при попытке создать новый объект этого класса, ты всегда будешь получать один и тот же объект. Синглтоны полезны, когда нужно ограничить количество экземпляров класса, например: Преимущества синглтона: Недостатки синглтона: Несколько способов реализации синглтона в Python. Когда использовать синглтон? Оригинала статьи в GIT Другие шпаргалки: Серия 101 игра на python с разбором кода. Портирую классические игры на язык python с добавлением искусственного интеллекта. Серия информатика, с изложением терминов
Оглавление

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

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

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

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

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

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

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

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

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

  • Mетод __new__ отвечает за создание экземпляра класса. Переопределив его, я смогу контролировать этот процесс.
  • В этом примере я буду хранить единственный экземпляр класса в переменной _instance.
  • Если экземпляра еще нет, я его создам, иначе верну уже существующий экземпляр.

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

  • Декоратор – это функция, которая модифицирует класс.
  • В этом примере я создаю функцию-декоратор singleton, которая принимает класс и возвращает его обернутую версию.
  • Внутри декоратора я храню экземпляры классов в словаре instances.
  • Если экземпляр класса еще не создан, я его создам и сохраню в словаре, иначе верну существующий экземпляр.
-2

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

  • Mетакласс позволяет контролировать создание классов.
  • В этом примере я создам метакласс SingletonMeta, который будет следить за созданием экземпляров.
  • Метакласс хранит экземпляры классов в словаре _instances.
  • При создании нового экземпляра, я проверяю, есть ли он уже в словаре, если нет – создаю, иначе возвращаю существующий экземпляр.
-3

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

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

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

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

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

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

101 игра на python. Шпаргалка. Строки в python
101 игра на python25 декабря 2024
101 игра на python. Шапргалка. Функции в python
101 игра на python25 декабря 2024
101 игра нa python. Шпаргалка. Переменные в Python: что, как и зачем нужны
101 игра на python25 декабря 2024
101 игра на python. Шпаргалки. Структуры данныx python
101 игра на python27 декабря 2024

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

101 игра на python | 101 игра на python | Дзен

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

101 игра на python. Информатика | 101 игра на python | Дзен