Курс 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"
- Переворот списка в Python
- Использование подчеркивания в REPL
- Руководство по Pymorphy2
- Работа с YAML в Python
- Инициализация объекта
- Оператор морж в Python 3.8
- Объединение объектов в Python
- Ключевое слово global в Python
- Вычисление фазы комплексного числа
- Генераторы и сеты в Python
- Сокращение ссылок с pyshorteners
- Атрибуты класса и экземпляра в Python
- Расчет времени выполнения кода
- Комментарии в Python
- Использование двоеточия в Python
- Вызов внешних программ в Python с помощью sh
- Применение функций в Python
- Установка и использование Virtualenv
- Управление ресурсами с контекстными менеджерами
- inspect в Python: анализ кода
- Настройка вывода NumPy
- Основные операции с библиотекой Numpy
- Функция zip() в Python
- Повторение элементов в Python
- Создание и инициализация объектов
- Замена текста в Python
- %pinfo: получение информации об объекте
- Работа с рекламными данными в Pandas
- Работа с NumPy массивами
- Удаление символов новой строки в Python.
- Генераторы в Python
- Установка User-Agent в Python
- Изменение объектов в Python
- Сортировка слиянием
- Генерация QR-кодов с библиотекой qrcode
- Функциональное программирование.
- Построение графиков в Matplotlib
- Лямбда-функции в Python
- Работа со слайсами
- Сравнение неупорядоченных списков
- Добавление элементов в список
- Использование html-скриптов в Jupyter Notebook
- Вычисление логарифмов в Python
- Генератор списка в Python
- Создание функций высшего порядка
- Работа с GitHub в Telegram
- Модуль future Python
- Импорт в Python: список all















