Como conoser el nombre de una instancia de una clase

Chema Cortes pych3m4 en gmail.com
Mar Mar 28 10:28:29 CEST 2006


On 3/24/06, Alvaro <aleivag en udd.cl> wrote:

> Lo que pasa es que estoy desarrollando un software de Investigacion
> de operaciones. y como esta empezando le estoy dando vueltas al
> asunto.entonces me gustaria poder escrivir el siguiente codigo
>
>  >>>X = RealVar()
>  >>>Y = Realvar()
>  >>>
>  >>> print 3*X+5*Y
> '3*X+5*Y'
>
> ya puedo hacer todo, multiplicar RealVar con casi cualquier cosa, la
> suma tampoco es problema. el problema conciste en que cuendo quiero
> imprimir el resultado como un str, no se que nombre le pudo el
> usuario a cada variable

Entiendo que lo que pretendes hacer es una especie de calculador
simbólico ó algebráico.

No se puede hacer tal como dices, pero se me ocurre que una forma de
hacerlo podría ser con los métodos __getattr___ o __getattribute__

class Simbol(object):
  def __mul__(self,y):
    ...
  def __sum__(self,y):
    ...
  def __str__(self):
    ...
  ...

class R(oject):
  def __init__(self):
    self.simbols={}
  def __getattr__(self,name):
    d=self.simbols
    if not d.has_key(name):
      d[name]=Simbol()
    return d[name]


r=R()

print 2*r.x+5*r.y


Esta es la idea. Te dejo que hagas el desarrollo completo te lo dejo a
tí, pero si no te sale podría intentar completarte el código.




Más información sobre la lista de distribución Python-es