因此,我创建了一个数组中的离开航班列表,以便在稍后的应用程序中进行迭代。Python没有创建一个新的干净实例?
我从长长的html中获取信息。
xpathes检出和其他一切都很好。我有一个名为FlightLegs的主要包装对象。还有一个名为Flights的小内部对象。
结构简单。每个FlightLegs都有一个DATE,在这个DATE上,这些航班将在该日期的不同时间离开,而三个航班将以不同的时间离开。
所以就像你有一个日期:2012年3月28日和三个航班离开:8点10分,14点30分,20点。
够简单。
所以我有两个嵌套循环。首先,通过FlightLegs循环。设置DATE ...然后在该航段中的航班上循环。并将它们添加到航班数组中。然后将FlightLegs广告列表。并开始一个新的。
下面是代码:
#Looping thourght the flight legs.
for flightLeg in flightLegs:
#. is needed in the xpath so it matches items only in this flight leg.
fleg = FlightLeg()
fleg.Date = str(flightLeg.xpath(".//input[@name='departDate1']")[0].get('value'))
innerFlights = flightLeg.xpath(".//div[@class='flights_flight']")
counter = 0
#Getting the three flights in the flight leg leaving at 8 - 14 - 20.
for flight in innerFlights:
fl = Flight()
fl.FlightPrice = str(flight.xpath(".//span[@class='flights_price']")[0].text)
fl.FlightDepartureTime = str(flight.xpath(".//span[@class='flights_departuretime']")[0].text)
fl.FlightArrivalTime = str(flight.xpath(".//span[@class='flights_arrivaltime']")[0].text)
fl.FlightNumber = str(flight.xpath(".//span[@class='flights_flightnumber']")[0].text)
fl.FlightDepAirport = str(flight.xpath(".//span[@class='flights_departureairport']")[0].text)
fleg.Flights.append(fl)
print "Lengts of inner flights: " + str(len(fleg.Flights))
counter += 1
print "Lengts of inner counter: " + str(counter)
flightList.append(fleg)
现在有了这个问题,在内部飞行航段阵列实际上是在3增加,直到最后飞行600似乎没有新对象在循环中创建...所以会导致这种情况?
编辑:
FlightLeg是:
class FlightLeg:
Flight = []
Date = ""
航班是:
class Flight:
FlightPrice = ""
FlightDepartureTime = ""
.
.
.
顺便说一句..我是新来的,当然了Python。我只是在学习。但是现在看到DSM-s的评论,它可能是静态的。我认为变量将默认为public和instance。
我如何访问它们并不重要。重要的部分是柜台。 ;-)
我会通过foreach访问它们,例如。
究竟哪一行受到影响?什么是输出? – Marcin 2012-03-30 16:22:35
您实际上并未展示FlightLeg.Flights的定义方式。它可能是一个类变量,而不是一个实例变量,所以每个FlightLeg实例只共享一个Flights数组? – DSM 2012-03-30 16:22:53
我猜从第三行开始的所有代码都缩进了四个空格?你能修好缩进吗? – kossmoboleat 2012-03-30 16:27:12