У объекта нет проблем с атрибутами с кодом python - PullRequest
0 голосов
/ 27 апреля 2020

Я делаю проект по созданию базы данных авиакомпании (простой) с python 3.

. Он содержит три разных кода: Самолет, Полет и Авиакомпания. Все три кода работают вместе, и самолет и самолет работают правильно. Проблема с авиакомпанией.

Код выполняется с тестовым кодом. Этот тестовый код содержит всю информацию о самолетах и ​​рейсах. Эта информация сохраняется в двух разных классах, которые впоследствии вызываются программой авиакомпании.

Проблема возникает, когда я пытаюсь вызвать Airline.fleet (а также операции и расписание) из класса CAirline.

Программа возвращает:

AttributeError: 'list' object has no attribute 'fleet'

Код авиакомпании:

import Aircraft
import Flight

def Airline():
    class CAirline:
        def __init__(self):
            self.name = ""
            self.fleet = ""
            self.operations = ""
            self.schedule = ""

    return CAirline


def add_aircraft(a, ac):
    a=[Airline() for i in range(10)]
    j=0
    while j<len(a.fleet):
        if a[j].fleet[0]==ac[0]:
            return False
        else:
            a.fleet.append(ac)
            return True
        j+=1

Код испытания:

import Aircraft
import Flight
import Airline

def createXicaAirline ():


    AC1 = Aircraft.Aircraft()
    AC1.callsign = "EC234"
    AC1.type = "A320"
    AC1.seats = 280

    AC2 = Aircraft.Aircraft()
    AC2.callsign = "EC504"
    AC2.type = "A321"
    AC2.seats = 310


    FL1 = Flight.Flight()
    FL1.dep = "Barcelona"
    FL1.arr = "Budapest"
    FL1.time_dep = 8*60
    FL1.time_arr = 11*60
    FL1.passengers = 54

    FL2 = Flight.Flight()
    FL2.dep = "Barcelona"
    FL2.arr = "Istambul"
    FL2.time_dep = 9*60
    FL2.time_arr = 12.5*60
    FL2.passengers = 154

    FL3 = Flight.Flight()
    FL3.dep = "Istambul"
    FL3.arr = "Budapest"
    FL3.time_dep = 17*60
    FL3.time_arr = 19.25*60
    FL3.passengers = 140

    FL4 = Flight.Flight()
    FL4.dep = "Budapest"
    FL4.arr = "Barcelona"
    FL4.time_dep = 20*60
    FL4.time_arr = 23*60
    FL4.passengers = 97


    Xica = Airline.Airline()
    Xica.name = "Xica Airline"
    Airline.add_aircraft(Xica, AC1)
    Airline.add_aircraft(Xica, AC2)
    Airline.add_operation(Xica, FL1)
    Airline.add_operation(Xica, FL2)
    Airline.add_operation(Xica, FL3)
    Airline.add_operation(Xica, FL4)
    return Xica

print ("Phase1 test program")
A = createXicaAirline()
Airline.show_airline(A)
print ("Phase1 test program end")

Код работает до: Airline.add_aircraft (Xica, AC1)

1 Ответ

0 голосов
/ 27 апреля 2020

Проблема здесь;

a=[Airline() for i in range(10)]
j=0
while j<len(a.fleet):

Вы, вероятно, случайно оставили эту верхнюю строку там случайно, потому что она перезаписывает то, что вы передаете в функцию

Как подсказка, вы может помочь избежать этих проблем, используя более описательные имена переменных. Таким образом, вместо a, вы можете назвать это airlines или airline_list

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...