[pyar] Clase que encapsula un atributo

Angel Java Lopez ajlopez2000 en gmail.com
Mie Abr 23 11:37:26 ART 2014


Gracias por la explicacion del caso de uso.

Bien, y como se usa m? como se invocaria? cuando interviene?

Porque me parece, como apunta Alsina, que en algun momento haces
m.manejame(obj) y de ahi se obtiene todo

O como interviene m? de que otra forma?


2014-04-23 11:18 GMT-03:00 Emiliano Reynares <reynares.emiliano en gmail.com>:

> El caso de uso es similar al que se plantea en los modelos de Django. Cada
> clase del dominio (o sea, creada por el usuario) posee un atributo de clase
> que permite manipular los objetos de dicha clase. Algo así:
>
> class Model:
>     m = Manager()
>
> class Foo(Model):
>     pass
>
> Luego, cada clase del dominio posee una instancia de Manager para
> manipular sus objetos, y dicha instancia de Manager conoce la clase que la
> "posee" como atributo. Espero sea clara la explicación!
>
>
>
> 2014-04-22 16:08 GMT-03:00 Ariel Gerardo Ríos <arielgerardorios en gmail.com>
> :
>
> Gracias Fisa.... me salieron a flote oscuros pasados :$
>>
>> Saludos.
>>
>>
>> 2014-04-22 16:04 GMT-03:00 fisa <fisadev en gmail.com>:
>>
>> El día 22 de abril de 2014, 15:40, Ariel Gerardo Ríos
>>> <arielgerardorios en gmail.com> escribió:
>>> > Yo seguiría por el lado de la solución de Luis: las instancias creadas
>>> en
>>> > otros lados podrían tener un método que resetee el valor de parent
>>> para que
>>> > se acomoden al nuevo entorno:
>>> >
>>> > #!/usr/bin/env python
>>> > # -*- coding: utf-8 -*-
>>> >
>>> >
>>> > class A():
>>> >     def __init__(self, parent=None):
>>> >         self.set_parent(parent)
>>> >
>>> >     def set_parent(self, parent):
>>> >         self.parent = parent
>>> >
>>> >     def get_parent(self):
>>> >         return self.parent
>>> >
>>> >
>>> > class B():
>>> >     def __init__(self):
>>> >         self.a = A(self.__class__)
>>> >
>>> >
>>> > class C:
>>> >     def __init__(self, a):
>>> >         self.a = a
>>> >         self.a.set_parent(self.__class__)
>>> >
>>> >
>>> > if __name__ == '__main__':
>>> >     b = B()
>>> >     print b.a.get_parent()
>>> >
>>> >     c = C(b.a)
>>> >     print c.a.get_parent()
>>> >
>>> >
>>> >     Ejecutándolo tenés:
>>> >
>>> > $ python test.py
>>> > __main__.B
>>> > __main__.C
>>> >
>>> >
>>> >     Pero todo depende de qué tanto acceso tengas a la definición de las
>>> > clases para poder agregarles este método "set_parent()"
>>> >
>>> > Saludos.
>>> >
>>>
>>> Un comentario sobre este ejemplo, no sobre el tema del hilo:
>>>
>>> En python no se suele hacer eso de tener getters y setters para algo
>>> que es simplemente un atributo, no queda muy lindo y no se considera
>>> "pythónico".
>>> Para un atributo normal, basta con algo así:
>>>
>>> class A():
>>>     def __init__(self, parent=None):
>>>         self.parent = parent
>>>
>>> Fijate que es bastante menos código, y se usa simplemente así:
>>>
>>> a = A(algo_para_parent)
>>> a.parent = otra_cosa_parent
>>> print a.parent
>>>
>>> No hay necesidad de llamar a métodos para algo que es simplemente un
>>> atributo.
>>>
>>> Y si se tuviese alguna lógica que ejecutar en el set o get de ese
>>> atributo, se usan getters y setters pero "escondidos" en una property,
>>> para que siga usándose sin tener que llamar a métodos. De esa forma si
>>> tenés que "migrar" desde algo que antes no tenía lógica y ahora la
>>> requiere, no hace falta que cambies nada de los lugares donde eso se
>>> usa, porque la sintaxis sigue siendo la misma sin importar si tenés un
>>> atributo, o una property con getters y setters.
>>>
>>> Saludos!
>>>
>>> --
>>> fisa  -  Juan Pedro Fisanotti
>>> _______________________________________________
>>> 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
>>>
>>
>>
>>
>> --
>> Ariel Gerardo Ríos
>> linkedin <http://www.linkedin.com/pub/ariel-gerardo-rios/33/158/227> | *blog
>> <http://www.ariel17.com.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
>>
>
>
>
> --
> Emiliano Reynares
>
> _______________________________________________
> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140423/07dc32db/attachment-0001.html>


More information about the pyar mailing list