[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