Atributo compartido por objetos de una misma clase
Jose Caballero
jcaballero.hep en gmail.com
Mie Jul 9 20:06:13 CEST 2008
Hola
una cosa que debes tener en cuenta es que el paso de valores por defecto no
funciona exactamente igual que en C++, por ejemplo. A veces puede parecer
confuso. Cambia tu programa por esto:
class A:
def __init__(self, foo = None):
if not foo:
self.bar = []
else:
self.bar = foo
a = A()
a.bar.append(6)
b = A()
print a.bar
print b.bar
El resultado es el que creo que buscas:
[6]
[]
Saludos,
Jose
El día 9 de julio de 2008 13:58, Ricardo Catalinas Jiménez <
jimenezrick en gmail.com> escribió:
> Tengo unas nociones basicas acerca de como se gestionan los nombres y
> referencias de los objetos en python, pero el siguiente codigo se
> comporta de un modo que no entiendo:
>
> ------------------------------------------------------------------------
> class A:
> def __init__(self, foo = []):
> self.bar = foo
>
> a = A()
> a.bar.append(6)
> b = A()
> -----------------------------------------------------------------------
>
> Ahora resulta que tanto `a.bar' como `b.bar' tienen el mismo valor: `[6]'.
> ¿No tendria que ser `b.bar == []' ?
>
> Un saludo y gracias.
> --
> Ricardo
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es