Курс 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"

  1. Регистрация на курсы SF Education
  2. Преобразование данных в Python
  3. Форматирование чисел в Python
  4. Работа со стеком в Python
  5. Модуль Antigravity в Python 3
  6. Concrete Paths в Python
  7. Работа с процессами в Python
  8. Удаление ключа из словаря
  9. Добавление Progressbar в Python
  10. Работа с файлами в Python
  11. Использование html-скриптов в Jupyter Notebook
  12. Переворот строки с использованием цикла
  13. Оптимизация памяти с slots
  14. Возврат нескольких значений из функции
  15. Работа с географическими данными в Python
  16. Работа с каталогами в Python
  17. Регистрация на TenChat
  18. Декодирование байтов в строку
  19. Модуль functools в Python
  20. Загрузка постов Instagram
  21. Упрощенный вывод данных в Python
  22. Декоратор для группы пользователей в Django
  23. Делегирование в Python
  24. Использование defaultdict в Python
  25. Аннотации типов в Python
  26. Вычисление фазы комплексного числа
  27. Удаление элементов из списка в Python.
  28. Вложенные функции в Python
  29. Обмен значений переменных в Python
  30. Методы обработки строк в Python
  31. Работа с утверждениями в Python
  32. Настройка логгера Logzero
  33. Поиск уникальных и повторяющихся элементов
  34. Метод lt для сортировки объектов
  35. Оператор in для Python
  36. Установка Python — Простое руководство
  37. Управление виртуальными средами в Python
  38. Python reversed() vs срез[::-1]
  39. Создание уникального множества
  40. Метод __complex__ в Python
  41. Игра «Виселица» на Python
  42. Парсинг статей с Newspaper3k
  43. Объединение словарей в Python
  44. Python-dateutil — работа с датами
  45. Работа с NumPy.linalg
  46. Оптимизация интернирования строк
  47. Шаблоны и наследование в Flask

Marketello читают маркетологи из крутых компаний