[pyar] Clase que encapsula un atributo

Roberto Alsina ralsina en netmanagers.com.ar
Mar Abr 22 15:14:26 ART 2014


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


More information about the pyar mailing list