Містить дві ієрархії класів: плоскі та об'ємні фігури.
Абстрактний базовий клас задає спільний інтерфейс:
- усі фігури вміють повідомляти cвою площу методом area()
- усі фігури вміють повідомляти cвій периметр методом perim()
- фігури можна порівнювати (за площею)
Конкретні підкласи:
- Прямокутник (і його підклас Квадрат)
- Круг
- Трикутник
Фігура складається з основи (плоскої фігури) та висоти. Фігура вміє повідомляти:
- об'єм
- площу основи
- площу бічної поверхні
- площу всієї поверхні
Об'ємні фігури можна порівнювати (за їхнім об'ємом).
Абстрактний базовий клас Shape3D Задає структуру, описує спільний протокол як перелік абстрактних методів. Тільки площу основи він уже в стані обчислити. Абстрактні підкласи DirectShape, ConicalShape описують спільні риси прямих і конічних фігур. Наприклад, DirectShape визначає увесь протокол, оголошений у базовому класі. Конкретні підкласи відповідальні за правильне створення екземплярів і виведення. Підкласи ConicalShape визначають методи обчислення бічної поверхні.
Program.py містить приклади використання модулів pickle, shelve для зберігання та завантаження об'єктів у двійковому форматі.
Для перетворення об'єктів до текстового вигляду використано метод __repr__(self), а для відтворення - функцію eval(str).