Объявите класс Furniture
(мебель), объекты которого создаются командой:
f = Furniture(name, weight)
где name - название предмета (строка); weight - вес предмета (целое число).
В каждом объекте класса Furniture должны создаваться защищенные локальные атрибуты с именами __name и __weight. В самом классе Furniture
нужно объявить приватные методы:
__verify_name() - для проверки корректности имени;
__verify_weight() - для проверки корректности веса.
Метод __verify_name() проверяет, что имя должно быть строкой, если это не так, то генерируется исключение командой:
raise TypeError('название должно быть строкой')
Метод __verify_weight() проверяет, что вес должен быть положительным числом (строго больше нуля), если это не так, то генерируется исключение командой:
raise TypeError('вес должен быть положительным числом')
Данные методы следует вызывать всякий раз при записи новых значений в атрибуты __name и __weight (а также при их создании).
Установка и считывание значений атрибутов должны происходить по их имени следующим образом (через соответствующие сеттеры и геттеры):
obj.name = value
obj.weight = value
На основе базового класса Furniture
объявить следующие дочерние классы:
Closet
- для представления шкафов;
Chair
- для представления стульев;
Table
- для представления столов.
Объекты этих классов должны создаваться командами:
obj = Closet(name, weight, tp, doors)
# tp: True - шкаф-купе; False - обычный шкаф; doors - число дверей (целое число)
obj = Chair(name, weight, height)
# height - высота стула (любое положительное число)
obj = Table(name, weight, height, square)
# height - высота стола; square - площадь поверхности (любые положительные числа)
В каждом объекте этих классов должны создаваться соответствующие защищенные атрибуты:
- в объектах класса Closet: __name, __weight, __tp, __doors
- в объектах класса Chair: __name, __weight, __height
- в объектах класса Table: __name, __weight, __height, __square
Атрибуты __name и __weight должны инициализироваться через базовый класс. Все атрибуты должны быть приватными, считываться и устанавливаться через геттеры и сеттеры. Доступ ко всем атрибутам должен производиться по их имени (см описание в базовом классе)
В каждом классе (Closet, Chair, Table
) объявить метод: get_attrs()
, который возвращает кортеж из значений локальных защищенных атрибутов объектов этих классов.
При печати объекта каждого класса должна выводиться строка:
Объект: <перечисление значений всех атрибутов через запятую и один пробел>
Например:
Table: стол, 34, 75, 10
В программе нужно объявить только классы. На экран выводить ничего не нужно.
Примеры
№ | Входные данные | Выходные данные |
1
|
cl = Closet('шкаф-купе', 342.56, True, 3)
chair = Chair('стул', 14, 55)
tb = Table('стол', 34, 75, 10)
print(tb.get_attrs())
print(chair)
|
('стол', 34, 75, 10)
Chair: стул, 14, 55
|