Написать код на Python согласно заданиям ниже по пунктам в виде отдельных решений.
Требования: реализовать классы в отдельных модулях, код должен импортировать библиотеку и с помощью объектов цеплять реализуемую в них функциональность, обязательно комментировать все и пояснять как действия и решения принимались по ходу написания почему так а не иначе.
Задание 1. Базовое решение
Реализовать класс с конструктором. Определить значения по умолчанию для некоторых аргументов, чтобы их можно было не указывать в тех случаях, когда какие-то определенные значения недоступны или бессмысленны.
Реализовать с помощью свойств инкапсуляцию.
Добавить в класс методы, определяющие поведение.
Реализовать производные классы (не менее двух) и методы, характерные для них.
Реализовать отношение композиции.
Реализовать для базового класса перегрузку двух любых стандартных операторов, например, сложения и вычитания. Методы перегрузки должны возвращать новый объект того же класса.
Задание 2. Множественное наследование
Реализовать некую сущность вашего решения (обосновать свой выбор) как абстрактный класс.
Изменить реализацию наследования, добавив наследование от абстрактного класса.
Применить в иерархии классов наследование от класса-миксина.
Продумать и по возможности реализовать множественное наследование (в случае отказа от реализации множественного наследования обосновать свое решение).
Задание 3. Расширение функциональности
Реализуйте в своем проекте декораторы, которые
1) регистрирует вызовы важных сценариев.
Результат декорирования – информация о выполнении сценария (например, факт отработки, время начала и окончания, длительность и т.д.).
2) устанавливает/проверяет пре- и постусловия функций.
3) что-либо на ваше усмотрение.
Реализуйте в своем проекте метаклассы для расширения классов дополнительными возможностями (на ваше усмотрение).
Задание 4. Исключения
Реализуйте в своем проекте поддержку исключений.
Создайте в своем проекте классы исключений и покажите их применение.
Предложите в вашей процедуре (любой на ваш выбор) реализацию возбуждения исключения в случае нахождения некого соответствия вместо того, чтобы возвращать флаг состояния, который должен интерпретироваться вызывающей программой, т.е. с помощью исключения обеспечить способ подачи сигнала, не возвращая значение.
Задание 5. Многопоточность и асинхронность
Добавьте в свой проект реализацию вторичного потока для любого алгоритма.
Подберите наиболее наглядный пример, обоснуйте свой выбор.
Добавьте в свой проект реализацию асинхронного вызова для любого алгоритма.
Подберите наиболее наглядный пример, обоснуйте свой выбор.
Задание 6. Разработка графического интерфейса пользователя
Реализуйте модуль ввода данных GUI с помощью библиотеки tkinter (в ООП стиле) для любого алгоритма (сценария) вашей задачи.