Найти тему

Python 3. ООП: Магический метод __new__. Пример паттерна Singleton. Практические задания

Оглавление

Задание 1: Определение класса с Singleton паттерном

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

Задание 2: Работа с атрибутами в Singleton

  • Добавьте локальные свойства username и password в ваш класс Singleton.
  • Измените метод __init__ так, чтобы он устанавливал эти свойства, но не изменял их, если экземпляр уже существует.

Задание 3: Тестирование Singleton класса

  • Создайте несколько экземпляров вашего класса Singleton с различными значениями свойств username и password.
  • Проверьте, что все созданные экземпляры ссылаются на один и тот же объект и что свойства не изменились после первоначальной инициализации.

Задание 4: Управление состоянием в Singleton

  • Измените класс Singleton, добавив методы для аутентификации, которые позволят безопасно изменять username и password.
  • Убедитесь, что изменения применяются ко всем ссылкам на Singleton экземпляр.

По итогу пройдённых практических заданий вы сможете усвоить:

  1. Работу метода __new__ и его отличие от __init__: Вы научитесь, как метод __new__ используется для создания объектов и как он предшествует вызову метода __init__.
  2. Паттерн Singleton: Вы поймете, как реализовать паттерн Singleton, чтобы класс имел только один экземпляр в приложении.
  3. Контроль создания экземпляров: Вы узнаете, как контролировать процесс создания экземпляров, предотвращая создание новых экземпляров там, где это не нужно.
  4. Управление состоянием Singleton экземпляра: Вы освоите методы управления состоянием экземпляра, которые позволяют избежать проблем при изменении свойств в Singleton классе.
  5. Применение теоретических знаний на практике: Вы закрепите теоретические знания о магических методах и паттерне проектирования на практических примерах.

Пример выполнения задания можно посмотреть тут: https://clck.ru/3AMJ3U