Поля классов. Применение ООП в задачах
— тема по Linux
— необязательная тема
- Поля классов (статические члены)
- Методы классов, статические методы (методы-функции)
Динамическая работа с классами, getattr() и его применение
Домашнее задание
— теоретическое задание
— новая тема
В задаче про арбузы и авоськи избавиться от проверок на имя поля "arbuz". Вместо этого, более обобщенно, проверять объект на итерируемость.
- Сделать так, чтобы в авоське не встречалось более одного арбуза с одним и тем же ID.
- Сделать, чтобы при удалении арбузов освободившийся ID вновь использовался при создании нового арбуза (причем в первую очередь по сравнению с использованием совсем свежего номера ID).
ПОДСКАЗКА: переопределить метод __del__ у арбузов, чтобы он изменял статическое поле ID класса arbuz. Само поле ID тоже должно быть иным, нежели просто "первый свободный номер" (например, список занятых значений ID). Подумать, чтобы обработка этого поля была не очень ресурсоемкой.
- Реализовать калькулятор для выражений, записанных в польской инверсной записи. В качестве разделителя лексем допускать произвольное количество пробелов. Решить задачу с использованием объектно-ориентированного подхода:
- для каждого типа операндов определить свой класс, в котором определить:
- метод-распознаватель текстового представления объекта, который умеет найти его в начале некоторой строки, и если он нашелся, то сконструировать нужный объект и удалить использованную часть строки (для продолжения анализа).
- методы-операции, поддерживающие обработку разных типов объектов-операндов.
- для каждого типа операндов определить свой класс, в котором определить: