python - 对象没有属性问题python代码
问题描述
我正在做一个项目,用 python 3 创建航空公司的数据库(简单)。
它包含三个不同的代码:飞机、航班和航空公司。所有三个代码一起工作,飞机和航班都正常工作。问题出在航空公司一号上。
该代码使用测试代码执行。该测试代码包含来自飞机和航班的所有信息。该信息保存在两个不同的类中,稍后由 Airline 程序调用。
当我尝试从 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_aircraft(Xica, AC1)
解决方案
问题就在这里;
a=[Airline() for i in range(10)]
j=0
while j<len(a.fleet):
您可能不小心将顶行留在了那里,因为它会覆盖您传递给函数的内容
作为提示,您可以通过使用更具描述性的变量名称来帮助避免这些问题。因此a
,您可以调用它airlines
或airline_list