Задачи на ООП Python: классы, наследование и dataclass

Практикум объектно-ориентированного программирования для тех, кто уже знаком с функциями Python. Вместо заучивания определений вы будете исправлять и проектировать небольшие классы: температуру с проверкой значения, банковский счёт, товар, обработчик уведомлений и трекер задач.

Как пройти подборку

Сначала отработайте init, атрибуты экземпляра и обычные методы. Затем переходите к property, альтернативному конструктору и специальным методам. После этого разберите dataclass, перечисления, наследование и взаимодействие объектов через общий интерфейс.

В конце есть задачи на замену жёсткой зависимости и перенос процедурного кода в классы. Для них полезно заранее выписать, какие данные хранит каждый объект и какое действие он обязан выполнять.

Три вопроса к своему классу

Кто владеет состоянием? Список, созданный как изменяемый атрибут класса, может оказаться общим для нескольких экземпляров. Для отдельного состояния создавайте коллекцию в конструкторе; в dataclass для изменяемого значения подходит default_factory.

Какие значения допустимы? Если объект не должен содержать отрицательный баланс или неверную температуру, проверка должна происходить в согласованной точке изменения. Нельзя считать класс корректным только потому, что один пример его создания сработал.

Нужна ли проверка конкретного типа? Общий метод интерфейса позволяет вызывающему коду работать с разными реализациями. Длинная цепочка isinstance часто означает, что выбор поведения ещё остался снаружи объектов.

Проверяйте обычный сценарий и ограничения из условия. Не добавляйте новый публичный метод вместо требуемого и не меняйте сигнатуры, которые использует проверка. В каждой задаче указан самостоятельный контракт.

Для объяснений и обучения по порядку откройте бесплатный курс Python для продвинутых. После классов потренируйтесь писать тесты с pytest.

Задачи на ООП Python: классы, наследование и dataclass