Курс Python → Проектирование Singleton с метаклассом
Для проектирования Singleton с использованием метакласса в Python, мы можем определить метакласс, который будет контролировать создание экземпляров класса. Метакласс — это класс, экземпляры которого сами являются классами. Мы можем определить метод __new__ в метаклассе, чтобы контролировать создание экземпляров класса.
class SingletonMeta(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]
Затем мы можем определить наш класс, используя этот метакласс. Мы просто указываем metaclass=SingletonMeta в определении класса. Теперь при создании экземпляров этого класса, будет возвращаться один и тот же экземпляр.
class DatabaseConnection(metaclass=SingletonMeta):
def __init__(self):
print("Creating Database Connection")
Теперь, когда мы создаем экземпляры класса DatabaseConnection, каждый раз будет возвращаться один и тот же экземпляр. Это обеспечивает уникальность объекта и предотвращает создание дубликатов, что особенно полезно, например, при работе с соединениями к базе данных.
Пример использования:
db_conn1 = DatabaseConnection()
db_conn2 = DatabaseConnection()
print(db_conn1 is db_conn2) # Выведет True, так как это один и тот же объект
Другие уроки курса "Python"
- Принципы Zen of Python
- Основы работы с базами данных в Python
- Правила именования переменных
- Операции с датами в Python
- Работа с кортежами
- Проверка типов с использованием isinstance
- Декораторы с аргументами
- Склеивание строк через метод join()
- Работа с областями видимости переменных
- Оптимизация памяти с slots
- Округление чисел с помощью round
- Python: Фильтрация списков с помощью filter()
- Вывод символов строки в Python
- Поиск с библиотекой Google
- Просмотр внешних файлов в %pycat
- Оператор @ для умножения матриц
- Управление асинхронными задачами с помощью Semaphore
- Генерация QR-кодов с библиотекой qrcode
- Модуль math: константы π и e
- Тест скорости набора текста на Python
- Основы работы со списками
- Оператор in для проверки наличия элемента
- Многострочные строки в Python
- Однострочники Python
- Псевдонимы в Python
- Асинхронное программирование с asyncio
- Удаление дубликатов с помощью множеств
- Поиск анаграмм с Counter
- Вывод сложных структур данных с помощью pprint
- Импорт модулей и пакетов в Python
- Хеши в Python
- Обработка данных в Python
- Преобразование PowerPoint в PDF.
- Пустой оператор pass в Python
- Метод enumerate() в Python
- Функция count() в Python
- discard() — удаление элемента из множества
- Участие в LP стейкинге Waves
- Возведение в квадрат с помощью itertools
- Работа с Path в Python
- Операция += для списков
- Docstring в Python
- Поиск индекса элемента в списке
- Перевернуть список в Python
- Обработка исключений с блоком else
- Функции классификации комплексных чисел















