0
我不知道爲什麼這段代碼說每個Car
有兩個乘客。我只在一輛車上增加一個Person
。然而程序的輸出是這樣的。從簡單的Python類實現意外的輸出
People in car A
Alice
Bill
People in car B
Alice
Bill
其實我只希望愛麗絲在汽車A和比爾是在汽車B.
class Car():
name = None
person_list = []
def __init__(self, name):
self.name = name
def add_person(self, person):
self.person_list.append(person)
def list_people_in_car(self):
print "People in car {}".format(self.name)
for p in self.person_list:
print p.name
class Person():
name = None
def __init__(self, name):
self.name = name
if __name__ == '__main__':
person_alice = Person('Alice')
person_bill = Person('Bill')
car_a = Car('A')
car_a.add_person(person_alice)
car_b = Car('B')
car_b.add_person(person_bill)
car_a.list_people_in_car()
car_b.list_people_in_car()
這樣做'person_list = []'你創建'Car'類的所有實例單列表。將列表的創建移動到'__init __()'中。 –
啊,這同樣適用於'name'。或者是因爲我在'init'之外實例化它# –
不,'name'很好。在__init __()中設置它的值會影響類中的聲明。 –