На проверку сдается код, содержащий только описание классов!
Объявите базовый класс 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})