Python 为什么我的列表不能直接存储对象?(我的列表只创建并存储一个元组,元组存储对象)

Python 为什么我的列表不能直接存储对象?(我的列表只创建并存储一个元组,元组存储对象),python,Python,我想创建一个公交车站来存储乘客的一些信息 这是乘客的等级,起点站是指乘客的起点,终点站是指乘客的目的地 class passenger(): def __init__(self,name,start_station,destination_station): self.name = name self.start_station = start_station self.destination_station = destination_s

我想创建一个公交车站来存储乘客的一些信息

这是乘客的等级,起点站是指乘客的起点,终点站是指乘客的目的地

class passenger():
    def __init__(self,name,start_station,destination_station):
        self.name = name
        self.start_station = start_station
        self.destination_station = destination_station

A1 = passenger("A1","A","B")
A2 = passenger("A2","A","C")
A3 = passenger("A3","A","D")
A4 = passenger("A4","A","D")

B1 = passenger("B1","B","C")
B2 = passenger("B2","B","C")
B3 = passenger("B3","B","C")

C1 = passenger("C1","C","D")
C2 = passenger("C2","C","A")

D1 = passenger("D1","D","B")
D2 = passenger("D2","D","C")
D3 = passenger("D3","D","A")
下面的代码是公交车站的等级。乘客是列表,其中存储从车站出发的乘客。相邻站点是存储相邻站点和到站点距离的字典。乘客率是指开始时的乘客数量

from passenger import *
class Bus_Station():
    def __init__(self,name):
        self.name = name
        self.passenger = []
        self.adjacent_bus_station = {}
        self.passenger_rate_flow = 0

    def AddPassengers(self,*passengers):
        self.passenger.append(passengers)



    def AddAdjacent_bus_station(self):
        if(self.name == "A"):
            self.adjacent_bus_station["A<->B"] = 3
            self.adjacent_bus_station["A<->C"] = 7
            self.adjacent_bus_station["A<->D"] = 6

        if(self.name == "B"):
            self.adjacent_bus_station["B<->A"] = 3
            self.adjacent_bus_station["B<->C"] = 4
            self.adjacent_bus_station["B<->D"] = 5

        if (self.name == "C"):
            self.adjacent_bus_station["C<->A"] = 7
            self.adjacent_bus_station["C<->B"] = 4
            self.adjacent_bus_station["C<->D"] = 5

        if (self.name == "D"):
            self.adjacent_bus_station["D<->A"] = 6
            self.adjacent_bus_station["D<->B"] = 5
            self.adjacent_bus_station["D<->C"] = 5

    def Show_Info(self):
        for PG in self.passenger:

            info = "the name of passenger is "+ PG.name +"the start-station of passenger is "+PG.start_station+"the destination of passenger is "+ PG.destination_station
            print(info)

        for station,distance in self.adjacent_bus_station.items():
            print("the adjacent stations are " + station +" and the distance between the stations are "+str(distance))

        print("the rate of the passenger flow is "+str(self.passenger_rate_flow)+"\n\n\n\n")


    def PassengerRate(self):
        self.passenger_rate_flow = len(self.passenger)


A = Bus_Station("A")
B = Bus_Station("B")
C = Bus_Station("C")
D = Bus_Station("D")

A.AddAdjacent_bus_station()
A.AddPassengers(A1,A2,A3,A4)
A.PassengerRate()
A.Show_Info()

B.AddAdjacent_bus_station()
B.AddPassengers(B1,B2,B3)
B.PassengerRate()
B.Show_Info()

C.AddAdjacent_bus_station()
C.AddPassengers(C1,C2)
C.PassengerRate()
C.Show_Info()

D.AddAdjacent_bus_station()
D.AddPassengers(D1,D2,D3)
D.PassengerRate()
D.Show_Info()


资料如下:

Traceback (most recent call last):
  File "/home/surface/PycharmProjects/Final Year Project/Bus_Station.py", line 63, in <module>
    A.Show_Info()
  File "/home/surface/PycharmProjects/Final Year Project/Bus_Station.py", line 42, in Show_Info
    info = "the name of passenger is "+ PG.name +"the start-station of passenger is "+PG.start_station+"the destination of passenger is "+ PG.destination_station
AttributeError: 'tuple' object has no attribute 'name'
然而,我从未在类中创建“tuple”数据结构,我不知道如何解决它

更换

def AddPassengers(self,*passengers):
        self.passenger.append(passengers)
def添加乘客自身,*乘客: 旅客 与

def添加乘客自身,*乘客: 对于乘客中的乘客: 旅客 append函数接受单个项,而不是要附加到列表中的项元组。

Replace

def AddPassengers(self,*passengers):
        self.passenger.append(passengers)
def添加乘客自身,*乘客: 旅客 与

def添加乘客自身,*乘客: 对于乘客中的乘客: 旅客 append函数接受单个项,而不是要附加到列表中的项元组。

Replace

def AddPassengers(self,*passengers):
        self.passenger.append(passengers)

使用*passengers将导致passengers成为元组,您将其附加到self.passenger

Replace

def AddPassengers(self,*passengers):
        self.passenger.append(passengers)


使用*passengers将导致passengers成为tuple,您将其附加到self.passenger

以澄清,当您指定*passengers时,在该位置传递的参数将被放置到所有参数的tuple中。您的代码按原样将这个元组附加到乘客列表中,而元组作为一个整体没有name属性;相反,它的每一个元素都是hank!我解决了这个问题。我只是不知道如何使用asterrisk*。现在我了解了如何使用它。为了澄清,当您指定*passengers时,在该位置传递的参数将被放入所有参数的元组中。您的代码按原样将这个元组附加到乘客列表中,而元组作为一个整体没有name属性;相反,它的每一个元素都是hank!我解决了这个问题。我只是不知道如何使用asterrisk*。现在我知道怎么用了。谢谢!现在,我知道如何使用*参数和**参数。谢谢!现在,我知道如何使用*参数和**参数。