Suponga que tiene algo como esto:Instancias y atributos de Python: ¿es esto un error o lo entendí por completo?
class intlist:
def __init__(self,l = []):
self.l = l
def add(self,a):
self.l.append(a)
def appender(a):
obj = intlist()
obj.add(a)
print obj.l
if __name__ == "__main__":
for i in range(5):
appender(i)
Una función crea una instancia de intlist y pide a este nuevo ejemplo del método append en la instancia atribuir l.
cómo se produce la salida de este código es:
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2 , 3]
[0, 1, 2, 3, 4]
? Si cambio
obj = intlist()
con
obj = intlist(l=[])
consigo la salida deseada
[0]
[1]
[2]
[3]
[4]
¿Por qué sucede esto?
Gracias
1 de este texto como una pregunta y admitir culpa del comienzo. ¡Así es como aprendemos! :) – jathanism
Relacionados: http://stackoverflow.com/questions/1011431/python-things-one-must-avoid –
Gracias a todos, ahora que lo tengo, debo prestar más atención a lo que uso como valor predeterminado. Gracias de nuevo :) –