J'ai ce code simple:constructeur Python bizarreries
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
Si je entrée, par exemple, les 3 chiffres, pourquoi dois-je obtenir cette sortie:
[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]
Au lieu de quelque chose comme ça? Le programme semble continuer à fonctionner avec un seul tableau dans tous les obj créés. Je ne comprends pas pourquoi. Toute aide serait gonflée.
double possible de [ "moins Etonnement" en Python: L'argument par défaut Mutable] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – smac89
En relation: [Variables de classe statique en Python] (http://stackoverflow.com/questions/68645/static-class-variables-in-python) –