[pyar] Clase que encapsula un atributo

Emiliano Reynares reynares.emiliano en gmail.com
Mar Abr 22 15:57:39 ART 2014


Había pensado en esa solución, sólo que el atributo que debo inicializar es
de clase, y sólo deberia ser accesible desde la clase, NO de una instancia
en particular.


2014-04-22 15:40 GMT-03:00 Ariel Gerardo Ríos <arielgerardorios en gmail.com>:

> 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.
>
>
> 2014-04-22 15:18 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
>
> Pero cuando instancia A puede estar afuera de B, pasarse la instancia al
>> constructor de B, y asignarle la instancia al atributo foo de A
>>
>> class B(a)
>>     foo = a
>>
>> y en algun lado
>>
>> B(A())
>>
>> Disculpen, no se si esta bien escrito en Python, espero que se entienda
>> la idea: la instancia de A puede ser creada en el otro lado de la  luna, y
>> terminar en un atributo de una instancia de B
>>
>>
>> 2014-04-22 15:14 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
>>
>>>  On 22/04/14 15:08, Angel Java Lopez wrote:
>>>
>>> En principio no, porque un metodo de instancia SOLO conoce la instancia,
>>> no los atributos desde donde la instancia esta referenciada.
>>>
>>>  Una misma instancia podria estar referenciada desde quichicientos
>>> atributos, en michicientas clases. Cual seria el resultado que esperarias
>>> entonces en tu caso de uso?
>>>
>>>  Algun "workaround"?
>>>
>>>  Angel "Java" Lopez
>>> @ajlopez
>>>
>>>
>>> 2014-04-22 15:05 GMT-03:00 Emiliano Reynares <
>>> reynares.emiliano en gmail.com>:
>>>
>>>> Seguramente con un ejemplo se entienda mejor mi consulta:
>>>>
>>>>  class A():
>>>>     pass
>>>>
>>>>  class B():
>>>>     foo = A()
>>>>
>>>>  Dado esta estructura de clases, quisiera conocer desde un método de
>>>> la instancia 'foo' el nombre de la clase que la tiene como atributo (que en
>>>> este caso sería B). Alguna sugerencia?
>>>>
>>>
>>> Podés hacer alguna chanchada ...
>>>
>>> Por ejemplo, podrías usar el módulo traceback para poder inspeccionar el
>>> frame "superior" en el stack y eso te diría, cuando instanciás A, que estas
>>> en B, y A.__init__ podría guardar esa data en alguna parte.
>>>
>>> Ejemplo:
>>>
>>> >>> import traceback
>>> >>> help(traceback)
>>>
>>> >>> traceback.print_stack()
>>>   File "<stdin>", line 1, in <module>
>>> >>> class A:
>>> ...     def __init__(self):
>>> ...         traceback.print_stack()
>>> ...
>>> >>> class B:
>>> ...     a = A()
>>> ...
>>>   File "<stdin>", line 1, in <module>
>>>   File "<stdin>", line 2, in B
>>>   File "<stdin>", line 3, in __init__
>>>
>>>
>>> Asi que algo usando eso y el módulo inspect probablemente puedas hacer
>>> eso. Igual... PORQUEEEEEEEEE? ;-)
>>>
>>> _______________________________________________
>>> 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
>>
>
>
>
> --
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140422/70c53a46/attachment-0001.html>


More information about the pyar mailing list