[pyar] Clase que encapsula un atributo

Ariel Gerardo Ríos arielgerardorios en gmail.com
Mar Abr 22 16:08:05 ART 2014


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>*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140422/687087a2/attachment-0001.html>


More information about the pyar mailing list