Atributo compartido por objetos de una misma clase

Jose Caballero jcaballero.hep en gmail.com
Mie Jul 9 20:17:28 CEST 2008


Aquí tienes la explicación:

http://docs.python.org/tut/node6.html#SECTION006710000000000000000






2008/7/9 Jose Caballero <jcaballero.hep en gmail.com>:

> 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