Python不创建新的干净实例?

Python不创建新的干净实例?,python,Python,所以我在一个数组中创建了一个离开航班的列表,以便在以后的应用程序中迭代 我从一个很长的html中获取信息 xpathes退房了,其他一切都很好。我有一个主要的包装对象叫做FlightLegs。还有一个小的内部物体叫做飞行 结构简单。每个FlightLegs都有一个航班起飞的日期,三个航班在同一日期的不同时间起飞 就像你有一个日期:2012年3月28日和三个航班起飞时间:8:10,14:30,20:00 很简单 所以我有两个嵌套循环。首先,在飞行腿上打圈。设置日期。。。然后在那条腿上绕了一圈。并将

所以我在一个数组中创建了一个离开航班的列表,以便在以后的应用程序中迭代

我从一个很长的html中获取信息

xpathes退房了,其他一切都很好。我有一个主要的包装对象叫做FlightLegs。还有一个小的内部物体叫做飞行

结构简单。每个FlightLegs都有一个航班起飞的日期,三个航班在同一日期的不同时间起飞

就像你有一个日期:2012年3月28日和三个航班起飞时间:8:10,14:30,20:00

很简单

所以我有两个嵌套循环。首先,在飞行腿上打圈。设置日期。。。然后在那条腿上绕了一圈。并将它们添加到航班数组中。然后在列表中添加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的评论,它可能毕竟是静态的。我认为默认情况下变量将是公共的和实例的

我将如何访问它们并不重要。重要的部分是计数器


例如,我会通过foreach访问它们

您需要在构造函数中初始化变量(尤其是可变变量),而不是全局类。(您可以在类定义中设置不可变类型,例如字符串或字符串元组,但在大多数情况下可能不应该这样做)

也就是说,而不是:

class FlightLeg:
    Flight = []
…它只创建一个
航班
列表,由
航班腿
的所有实例共享

这样做:

class FlightLeg(object):
    def __init__(self):
        self.flight = []
…为每个
FlightLeg
对象创建一个新的
FlightLeg
列表


(使用大写成员名称不是一个bug,但在Python中恰好是不规则的,与之相反)。

到底哪一行受到影响?输出是什么?实际上并没有显示FlightLeg.Flights是如何定义的。有没有可能它是一个类变量,而不是一个实例变量,因此每个FlightLeg实例只共享一个Flights数组?我猜第三行的所有代码都缩进了四个空格?你能修复缩进吗?你没有提供足够的信息,请修复缩进,删除你认为可以的每一行,并用注释替换它,更明确地说明你如何访问FlightList,你得到的结果和预期的结果。天哪,伙计们,坚持住,我回家后会修复它。在那之前不要关上它。嘘,谢谢你,伙计!非常感谢!哇,我不知道。