对象在python代码中没有属性问题

2024-10-05 10:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,用Python3创建一家航空公司的数据库(简单)

它包含三个不同的代码:飞机、航班和航空公司。所有三个代码一起工作,飞机和飞行都正常工作。问题出在一号航空公司

该代码使用测试代码执行。该测试代码包含来自飞机和航班的所有信息。这些信息保存在两个不同的类中,稍后由航空公司程序调用

当我试着打电话给CAirline班的Airline.fleet(以及运营和日程安排)时,问题就来了

程序返回:

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_飞机(西卡,AC1)


Tags: addtimeflightarrdepfleet航空公司aircraft
1条回答
网友
1楼 · 发布于 2024-10-05 10:53:02

问题就在这里

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

您可能意外地将顶行留在那里,因为它覆盖了您传递给函数的内容

作为提示,您可以通过使用更具描述性的变量名来帮助避免这些问题。因此,您可以将其称为airlinesairline_list,而不是a

相关问题 更多 >

    热门问题