[pyar] Modificación de clases e instancias

Javier Burroni javier.burroni en gmail.com
Mie Ago 31 13:51:23 ART 2016


exacto. Hay alguna forma de hacer lo que planteaba mas "standard" ?

2016-08-31 12:41 GMT-04:00 Ariel Rossanigo <arielrossanigo en gmail.com>:

>
>
> El 31 de agosto de 2016, 13:22, Javier Burroni<javier.burroni en gmail.com>
> escribió:
>
>>
>>
>> 2016-08-31 11:59 GMT-04:00 Nats <taku246 en gmail.com>:
>>
>>> Javier, las instancias no deberían quedar desactualizadas, digamos que
>>> modificada la clase se modifican en cadena todas las instancias; justamente
>>> ese es todo el motivo de creación de clases. Sino harias un copy/paste y
>>> listo. Estas seguro que no las modifica?
>>>
>>> Esto es así en python 3? Si es así, es una buena noticia y una linda
>> razón para migrar. En python 2 no funciona así
>>
>
> Si no entiendo mal, lo que vos queres hacer no sería modificar una clase,
> sino volver a definirla; si es así las respuestas que te daban Darni y taku
> me parece que estaban apuntadas a modificar el mismo objeto. Lo que vos
> mostras en el notebook sigue siendo así en python 3.
>
> O sea, si vos haces:
>
> class A:
>  <<ponga su definicion aqui>>
>
> y luego,
>
> class A:
> << ponga su otra definicion aqui>>
>
> eso no modifica el objeto original que estaba asociado a "A", sino que
> genera uno nuevo y vuelve a asociar el nombre. En este caso las instancias
> quedan haciendo referencia al objeto anterior.
>
> In [1]: class A(): pass
> In [2]: x = A
> In [3]: a = A()
> In [4]: class A(): pass
> In [5]: x == A
> Out[5]: False
> In [6]: a.__class__ == A
> Out[6]: False
> In [7]: a.__class__ == x
> Out[7]: True
>
> Saludos
>
>
>
>> El 31 de agosto de 2016, 12:41, Javier Burroni <javier.burroni en gmail.com>
>>> escribió:
>>>
>>>> El problema es este:
>>>>
>>>> Escribo mi clase y le pongo el método "pirulin". Me hago un par de
>>>> instancias (que puede ser un proceso costoso). Luego, me doy cuenta que
>>>> pirulin no están piola como método, y que además necesito otro método:
>>>> barquillo. Modifico la clase para agregar el nuevo método y arreglar el que
>>>> ya estaba. Ahora, tendría que volver a crear las instancias. Eso es lo que
>>>> me quiero evitar.
>>>> Esto aparece mucho si usamos python en un ambiente interactivo, como el
>>>> notebook o la consola.
>>>> Que las instancias usen las nuevas clases es el comportamiento default
>>>> de ruby (creo) y smalltalk (seguro)
>>>>
>>>> 2016-08-31 11:35 GMT-04:00 Daniel Moisset <dmoisset en machinalis.com>:
>>>>
>>>>> No se si entendí bien a que problema le estas apuntando... las clases
>>>>> de algun modo son la parte "compartida" de sus instancias, por eso
>>>>> modificar una afrecta a todos. Que necesitas hacer que no puedas lograr
>>>>> modificando la instancia en vez de la clase?
>>>>>
>>>>> Saludos,
>>>>>     D.
>>>>>
>>>>> 2016-08-31 16:21 GMT+01:00 Javier Burroni <javier.burroni en gmail.com>:
>>>>>
>>>>>> Hola, como están?
>>>>>> Hay algo que me resulta un poco incomodo: Cuando modifico una clase,
>>>>>> las instancias referencian a la anterior versión de la clase. Esto es
>>>>>> discutible, con ventajas y desventajas, pero para lo que uso python el
>>>>>> 99,9% de las veces, me resulta incomodo.
>>>>>> Quería ver si existe alguna forma de solucionar esto (o modificar
>>>>>> este comportamiento)
>>>>>> Hice un pequeño código con metaclases que soluciona el problema en el
>>>>>> caso mas simple. Tengo entendido que en python 3 hay ephemerons, así que la
>>>>>> solución podría quedar un poco mas prolija.
>>>>>> El código es solamente para probar la idea: https://gist.github.com/
>>>>>> jburroni/0a2db81ba541e1d8dc632368fd7f8982 pero me interesa saber si
>>>>>> hay alguna solución standard
>>>>>>
>>>>>> saludos
>>>>>> jb
>>>>>>
>>>>>> --
>>>>>> " To be is to do " ( Socrates )
>>>>>> " To be or not to be " ( Shakespeare )
>>>>>> " To do is to be " ( Sartre )
>>>>>> " Do be do be do " ( Sinatra )
>>>>>>
>>>>>> _______________________________________________
>>>>>> pyar mailing list pyar en python.org.ar
>>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>>
>>>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>>>
>>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
>>>>>> de Argentina - http://www.usla.org.ar
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Daniel F. Moisset - UK Country Manager
>>>>> www.machinalis.com
>>>>> Skype: @dmoisset
>>>>>
>>>>> _______________________________________________
>>>>> pyar mailing list pyar en python.org.ar
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> " To be is to do " ( Socrates )
>>>> " To be or not to be " ( Shakespeare )
>>>> " To do is to be " ( Sartre )
>>>> " Do be do be do " ( Sinatra )
>>>>
>>>> _______________________________________________
>>>> pyar mailing list pyar en python.org.ar
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>>
>>> --
>>> NATS
>>> *Cuando le preguntaron adonde queria llegar  Charlie Parker contesto:*
>>> *"Quiero llegar a notas hermosas"*"
>>>
>>> P *Please consider the environment before printing this email*
>>> *Por favor, tené en cuenta el medio ambiente antes de imprimir este
>>> imail. *
>>> *Join the campaign at http://thinkBeforePrinting.org
>>> <http://thinkbeforeprinting.org/> *
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>>
>> --
>> " To be is to do " ( Socrates )
>> " To be or not to be " ( Shakespeare )
>> " To do is to be " ( Sartre )
>> " Do be do be do " ( Sinatra )
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
" To be is to do " ( Socrates )
" To be or not to be " ( Shakespeare )
" To do is to be " ( Sartre )
" Do be do be do " ( Sinatra )
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160831/a5025a92/attachment-0001.html>


Más información sobre la lista de distribución pyar