嘿所有人,如果你看过我之前的帖子,你就会知道我正在使用Python制作航空公司计划。
另一个问题是,在我启动一个航班后,它会计算航班的持续时间并替换用于启动航班的按钮。但是当我购买另一架飞机时,它会同时改变两种飞行状态(状态为持续时间 - 到达时间,留下时间,直到它再次着陆)。
我的程序在这一点上相当大,所以不好尝试并筛选其中的所有其他****:
以下是点击“启动航班”的页面
def Flights (GUI, Player):
...
for AP in Player.Airplane_list:
GUI.la(text = AP.aircraft)
GUI.la(text = 'Flight Pax')
if AP.status == 0:
GUI.gr(2)
GUI.bu(text = 'Launch Flight', command = Callable(Launch_refresh, count, GUI, Player))
GUI.bu(text = 'Edit Flight', command = Callable(flight_edit, GUI, count, Player))
Launch_refresh基本上刷新窗口并进入启动(下方),计算所有时间和现金。和Self是Player类,它位于播放器类中的启动方法之下。
def launch (self, Airplane_No): #Method used to calculate flight-time specific-data and set aircraft into flight
if self.fuel >= (self.Airplane_list[Airplane_No].duration*self.Airplane_list[Airplane_No].fuel_consump):
self.Airplane_list[Airplane_No].Flight.departure_time = datetime.now()#sets Departure Time to Now
self.Airplane_list[Airplane_No].Flight.arrival_time = self.Airplane_list[Airplane_No].Flight.departure_time+timedelta(self.Airplane_list[Airplane_No].duration)#Sets arrival Time
self.Airplane_list[Airplane_No].status = self.Airplane_list[Airplane_No].Flight.arrival_time-datetime.now()#Status to Arrival time minus now
self.fuel -= (self.Airplane_list[Airplane_No].duration*self.Airplane_list[Airplane_No].fuel_consump)#Subtracts Fuel Used
self.bank += self.Airplane_list[Airplane_No].Flight.income#Adds Flight Income to Bank
这是Player类
class Player (object):#Player Class to define variables
'''Player class to define variables'''
def __init__ (self, stock = 0, bank = 1, fuel = 0, total_flights = 0, total_pax = 0, Airplane_list = Airplane([]), APValue_Total = 1):
...
然后在Player.Airplane_list里面是一个飞机类列表,里面有飞行类:
这是飞机类:
class Airplane (object):
'''Airplane Class'''
def __init__ (self, company = '', aircraft = '', base_price = 0, flight_range = 0, pax = 0,
fuel_consump = 1, speed = 10, crew_pilots = 0, crew_cabin = 0,
crew_mechanics = 0, crew_cleaning = 0, staff_trg = 0, Total_price = 0, status = 0, Flight = Flight(departure_time = datetime(1,1,1),
distance = 2000, arrival_time = datetime(1,1,1)),duration = 1, airplane_details = []):
并且你可以看到它有Flight类,它只使用那3个参数(持续时间需要使用飞机的速度和飞行距离)
所以我猜测问题出在启动方法中,但我不确切地知道它从哪里开始......然后它再次对我来说很好看:S
答案 0 :(得分:1)
您的__init__
代码默认了对象的参数:
class Airplane (object):
'''Airplane Class'''
def __init__(self, ..., Flight = Flight(departure_time = datetime(1,1,1), ...):
默认参数仅在定义类时计算一次,因此除非在构造函数参数中指定,否则每个Airplane对象将获得相同的Flight。我无法理解您所询问的所有内容,但这可能会导致您的问题。