На проверку сдается код, содержащий только описание классов!
Объявите базовый класс Aircraft
(самолет), объекты которого создаются командой:
air = Aircraft(model, mass, speed, top)
где __model
- модель самолета (строка, private
); _mass
- подъемная масса самолета (любое положительное число, protected
); _speed
- максимальная скорость (любое положительное число, protected
); _top
- максимальная высота полета (любое положительное число, protected
).
В каждом объекте класса Aircraft
должны создаваться локальные атрибуты с именами: __model, _mass, _speed, _top
и соответствующими значениями. Если передаваемые аргументы не соответствуют указанным критериям (строка, любое положительное число), то генерируется исключение командой:
raise TypeError('неверный тип аргумента')
Изменение и считывание значений атрибута __model
должна осуществляться по имени (obj.model = ..., print(obj.model
)
Далее, в программе объявите следующие дочерние классы:
PassengerAircraft
- пассажирский самолет;
WarPlane
- военный самолет.
Объекты этих классов создаются командами:
pa = PassengerAircraft(model, mass, speed, top, chairs)
# chairs - число пассажирских мест (целое положительное число)
wp = WarPlane(model, mass, speed, top, weapons)
# weapons - вооружение (словарь); ключи - название оружия, значение - количество
В каждом объекте классов PassengerAircraft
и WarPlane
должны формироваться локальные атрибуты с именами _chairs
(protected
)
и _weapons
(protected
)
соответственно. Инициализация остальных атрибутов должна выполняться через инициализатор базового класса.
В инициализаторах классов PassengerAircraft
и WarPlane
проверять корректность передаваемых аргументов chairs
и weapons
. Если тип данных не совпадает, то генерировать исключение командой:
raise TypeError('неверный тип аргумента')
Пример создания объектов
pa1 = PassengerAircraft('МС-21', 1250, 8000, 12000.5, 140)
pa2 = PassengerAircraft('SuperJet', 1145, 8640, 11034, 80)
wp1 = WarPlane('Миг-35', 7034, 25000, 2000, {"ракета": 4, "бомба": 10})
wp2 = WarPlane('Су-35', 7034, 34000, 2400, {"ракета": 4, "бомба": 7})