[pyar] Clase que encapsula un atributo

Angel Java Lopez ajlopez2000 en gmail.com
Mar Abr 22 15:18:00 ART 2014


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


More information about the pyar mailing list