Python列表附加问题
我今天在添加python列表时遇到了一个相当奇怪的问题。我试图创建一个数组,它的每个元素都像一个CPython列表附加问题,python,list,append,Python,List,Append,我今天在添加python列表时遇到了一个相当奇怪的问题。我试图创建一个数组,它的每个元素都像一个Cstruct。其中一个元素是一个列表本身。这是有问题的代码: class players: name='placeholder' squad=list() teams=list() teams.append(players()) teams.append(players()) teams[0].name="abc" teams[1].name="xyz" teams[0].squa
struct
。其中一个元素是一个列表本身。这是有问题的代码:
class players:
name='placeholder'
squad=list()
teams=list()
teams.append(players())
teams.append(players())
teams[0].name="abc"
teams[1].name="xyz"
teams[0].squad.append("Joe")
for w in teams:
print(w.name)
print(w.squad)
我期望的结果是:
abc
['Joe']
xyz
[]
因为我只为团队[0]的团队添加了一名成员。但我得到的结果是:
abc
['Joe']
xyz
['Joe']
名称设置得很好,但是.append
将其附加到团队的两个元素中
是什么导致了这一点?我该如何解决这一点?原因是在您的类定义中,班
和名
是类变量,而不是实例变量。当一个新的玩家
对象被初始化时,它实际上在该玩家的所有实例中共享相同的班
变量。相反,您希望为player
类定义一个\uuuuu init\uuu
方法,该方法显式地分隔实例特定的变量
class players:
def __init__(self):
self.name = 'placeholder'
self.squad = []
然后,当您初始化新的player
对象时,它有自己的band
变量。剩下的代码现在应该可以正常工作了,只添加了正确对象的组
。有些人说JavaScript很奇怪