我有一个简单的代码:
class bfs:
vis=[]
bags=[]
def __init__ (self,x):
for i in p: #initializes vis with len(p) zeroes
self.vis.append(0)
print self.vis
self.vis[x]=1 #marks index x as visited
print self.vis
p=raw_input("Input values: ").split()
for i in range(0,len(p)):
p[i]=int(p[i])
q=[]
for i in range(0,len(p)):
q.append(bfs(i))
print
for i in q:
print i.vis
如果我输入,比如说,任何3个数字,为什么我得到这个输出:
[0]
[0, 0]
[0, 0, 0]
[1, 0, 0]
[1, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
而不是像这样?你知道吗
[0]
[0, 0]
[0, 0, 0]
[1, 0, 0]
[0]
[0, 0]
[0, 0, 0]
[0, 1, 0]
[0]
[0, 0]
[0, 0, 0]
[0, 0, 1]
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
该程序似乎只是继续在所有创建的obj中使用一个数组。我不明白为什么。任何帮助都是巨大的。你知道吗
问题是您将
vis
和bags
定义为类的一部分(作为“属性引用”),而不是在构造函数中。请尝试以下操作:documentation for class objects可能有助于:
关于这个还有一个Dive Into Python page:
相关问题 更多 >
编程相关推荐