В Python, синглтон – это шаблон проектирования, который гарантирует, что у класса будет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это значит, что при попытке создать новый объект этого класса, ты всегда будешь получать один и тот же объект. Синглтоны полезны, когда нужно ограничить количество экземпляров класса, например: Преимущества синглтона: Недостатки синглтона: Несколько способов реализации синглтона в Python. Когда использовать синглтон? Оригинала статьи в GIT Другие шпаргалки: Серия 101 игра на python с разбором кода. Портирую классические игры на язык python с добавлением искусственного интеллекта. Серия информатика, с изложением терминов
В Python, синглтон – это шаблон проектирования, который гарантирует, что у класса будет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это значит, что при попытке создать новый объект этого класса, ты всегда будешь получать один и тот же объект. Синглтоны полезны, когда нужно ограничить количество экземпляров класса, например: Преимущества синглтона: Недостатки синглтона: Несколько способов реализации синглтона в Python. Когда использовать синглтон? Оригинала статьи в GIT Другие шпаргалки: Серия 101 игра на python с разбором кода. Портирую классические игры на язык python с добавлением искусственного интеллекта. Серия информатика, с изложением терминов
...Читать далее
Оглавление
В Python, синглтон – это шаблон проектирования, который гарантирует, что у класса будет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Это значит, что при попытке создать новый объект этого класса, ты всегда будешь получать один и тот же объект.
Синглтоны полезны, когда нужно ограничить количество экземпляров класса, например:
- Для управления подключением к базе данных (чтобы не открывать много подключений).
- Для хранения глобальной конфигурации приложения (чтобы все части приложения использовали одну и ту же конфигурацию).
- Для логгирования (чтобы все сообщения шли в один файл).
Преимущества синглтона:
- Гарантия единственного экземпляра: Синглтон гарантирует, что класс будет иметь только один экземпляр. Это полезно для управления ресурсами, которые должны быть уникальными.
- Глобальный доступ: Синглтон предоставляет глобальную точку доступа к экземпляру класса, что упрощает использование этого экземпляра в любой части программы.
Недостатки синглтона:
- Глобальное состояние: Синглтон может привести к использованию глобального состояния, что может вызывать неожиданные побочные эффекты и усложнять тестирование.
- Нарушение принципов ООП: Синглтон может нарушать принцип единственной ответственности и инкапсуляции.
Несколько способов реализации синглтона в Python.
1. Реализация Через переопределение метода __new__
- Mетод __new__ отвечает за создание экземпляра класса. Переопределив его, я смогу контролировать этот процесс.
- В этом примере я буду хранить единственный экземпляр класса в переменной _instance.
- Если экземпляра еще нет, я его создам, иначе верну уже существующий экземпляр.
2. Реализация Через декоратор
- Декоратор – это функция, которая модифицирует класс.
- В этом примере я создаю функцию-декоратор singleton, которая принимает класс и возвращает его обернутую версию.
- Внутри декоратора я храню экземпляры классов в словаре instances.
- Если экземпляр класса еще не создан, я его создам и сохраню в словаре, иначе верну существующий экземпляр.
3. Реализация Через метакласс
- Mетакласс позволяет контролировать создание классов.
- В этом примере я создам метакласс SingletonMeta, который будет следить за созданием экземпляров.
- Метакласс хранит экземпляры классов в словаре _instances.
- При создании нового экземпляра, я проверяю, есть ли он уже в словаре, если нет – создаю, иначе возвращаю существующий экземпляр.
4. Реализация Через модуль
- В Python модуль сам по себе является синглтоном.
- Я могу создать объект в модуле, и он будет единственным экземпляром.
Когда использовать синглтон?
- Когда тебе нужно, чтобы объект существовал в единственном экземпляре (например, конфигурация, логгер, подключение к базе данных).
- Когда тебе требуется глобальный доступ к этому объекту.
Оригинала статьи в 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 с добавлением искусственного интеллекта.
Серия информатика, с изложением терминов