[pyar] Problema con herencia.

QliX=D! [aka EHB] qlixed en gmail.com
Sab Sep 17 17:50:22 ART 2011


Estimados,
  Tengo un inconveniente bastante particular y no logro dar con la
logica de por que me sucede.
  Lo puedo solucionar implementando el esquema de otra forma, pero me
gustaria entender el problema y tratar de dejar la implementacion que
arme.

Tengo la siguientes clases cortas:

class Operation (object):
    def __init__(self):
        pass
    def __repr__(self):
        return self.__str__()
    def do(self):
        raise NotImplementedError()


class RelationalOperation(Operation):
    __relations = []

    def __init__(self, *args):
        for arg in args:
            print "Added:" + str(arg)
            self.__relations.append(arg)
    def __str__(self):
        return self.__class__.__name__ + " Between:" + str(self.__relations)
    @property
    def relations(self):
        return self.__relations

class AddedRelation(RelationalOperation):
    def __init__(self, aRelation):
        super(AddedRelation, self).__init__(aRelation)
    def __repr__(self):
        return "<"+self.__class__.__name__ + ": " + ",".join(self.relations)+">"
    def __str__(self):
        return self.__class__.__name__ + str(self.relations)

Ahora, al momento de utilizarlas tengo el siguiente inconveniente:

#....

relations_stack.append(AddedRelation("hola"))

#....

   try:
      while (True):
         sentences_stack.append(AddedRelation(relations_stack.pop()))
   except IndexError:
     pass

print sentences_stack # [<AddedRelation: hola>]
#....

relations_stack.append(AddedRelation("chau"))

#....

   try:
      while (True):
         sentences_stack.append(AddedRelation(relations_stack.pop()))
   except IndexError:
     pass

print sentences_stack # [<AddedRelation: hola, chau>, <AddedRelation:
hola, chau>]

O sea, se me "updatea" el valor anterior con el nuevo mas el valor
nuevo agregado en la "pila".

Que hice mal? en la definicion de clases?

Saludos.
-E-



More information about the pyar mailing list