class Airplane:
def __init__(self, plane_model, serial_num, num_seats, miles_travelled):
self.model = plane_model
self.serial = serial_num
self.seat = num_seats
self.miles = miles_travelled
class Flight:
def __init__(self, plane):
self.passangers = []
self.airplane = plane
Я пытаюсь выполнить следующую функцию:Наследование не имеет атрибута?
def add(self, passenger):
"""(Flight, str) -> bool
If there are still seats avalaible on this flight, add passenger to the passenger list.
Return true iff passenger is added to this flight.
>>> a = Airplane('Cesna 150E', '9378', 1, 824.8)
>>> f = Flight(a)
>>> f.add('Myrto') # Decreases the seat by 1
True
>>> f.add('Jen') # No more seats avalaible
False
"""
До сих пор моя попытка:
if self.seat > 0:
self.seat -= 1 #num_seats
return True
else:
return False
Конечно, естественно, экземпляр переменной num_seats
будет уменьшаться на единицу, если пассажир добавлен. Количество доступных мест указано по третьему параметру в классе Airplane
.
Если я использую функцию, которую я разработал, пытающегося точно такое же действие, как в строку документации возвращает следующее сообщение об ошибке:
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
f.add('a')
File "/Users/N/Desktop/Untitled.py", line 39, in add
if self.seat > 0:
AttributeError: 'Flight' object has no attribute 'seat'
Я думаю, что может быть что-то отсутствует, но я не уверен, что это.
Вы имели в виду 'self.plane.seat'? – jonrsharpe
Кроме того, ваше название упоминает * «наследование» *, но * у вас на самом деле нет *. Если 'Flight' должен унаследовать от' Самолета' (я не думаю, что это должно быть, а состав, а не наследование, здесь правильный выбор), он должен быть «class Flight (Самолет):'. – jonrsharpe
Да, вы правы, это должна быть композиция, а не наследование. Мои извинения. Я решил это, используя self.airplane.seat, хотя. Возможно, мне нужно обратиться к классу с атрибутом self.seat. – amundi12