class Person:
pets=[]
def add_pet(self, pet):
self.pets.append(pet)
jane = Person()
bob = Person()
jane.add_pet("cat")
print(jane.pets)
print(bob.pets)
打印出来:
['cat']
['cat']
为什么鲍勃的宠物也是猫?我没有把宠物附加到鲍勃身上。
答案 0 :(得分:0)
因为你与Person的每个实例共享变量pet。
class Person:
def __init__(self):
self.pets = []
def add_pet(self, pet):
self.pets.append(pet)
这应该可以解决问题。
答案 1 :(得分:0)
由于您声明它的位置,列表pets
在类中的所有对象之间共享。您需要一个名为__init__
的构造函数,它在创建对象时自动调用:
class Person:
def __init__(self):
self.pets = []
def add_pet(self, pet):
self.pets.append(pet)
jane = Person()
bob = Person()
jane.add_pet("cat")
print(jane.pets)
print(bob.pets)
给出:
['cat']
[]
答案 2 :(得分:0)
如果您希望宠物成为实例成员:
class Person:
def __init__(self):
self.pets = []
...
输出:
['cat']
[]