0
私はこのコードがそれぞれCar
に2人の乗客を持っていると言っている理由を知らない。私はただ1台の車にPerson
を1つ追加しています。しかし、プログラムの出力はこれです。予期せぬ出力が簡単なpythonクラスの実装
People in car A
Alice
Bill
People in car B
Alice
Bill
私は実際にperson_list
がクラス変数であるので、それは車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()
問題を修正します。リストの作成を '__init __()'に移動します。 –
ああ、 'name'にも同じことが言えます。または、私は 'init'の外でそれをインスタンス化しているからです。 –
いいえ、' name'は問題ありません。 '__init __()'にその値を設定すると、クラスの宣言がシャドーされます。 –