[pyar] Problema en el pasaje de atributos de una clase a metodos.

Lucas Liendo mindmaster en gmail.com
Sab Nov 20 19:20:02 ART 2010


Buenas ! Resulta que programando un rato me estanque con el siguiente
problema : necesito pasar como argumentos a ciertos metodos los atributos de
la clase, esto lo hago porque no se me ocurrio otra manera de repetir
codigo, aca va un ejemplo :

class ClassTest(object) :
    def __init__(self) :
        self.test_var1 = 0
        self.test_var2 = 1
        self.test_var3 = 2
        self.test_var4 = 3
        self.test_dict = {'key1' : (self.test_method, (self.test_var1,
self.test_var2)),
        'key2' : (self.test_method, (self.test_var3, self.test_var2))}

    def run(self) :
        self.test_dict ['key1'] [0] (*self.test_dict ['key1'] [1])
        self.test_dict ['key2'] [0] (*self.test_dict ['key2'] [1])

    def test_method(self, arg1, arg2) :
        self.print_test_vars()
        # En realidad aca quiero modificar self.test_var1 y self.test_var2
        # a traves de arg1 y arg2
        arg1 = 88
        arg2 = 89
        self.print_test_vars()

    def print_test_vars(self) :
        print "self.test_var1 %d" % self.test_var1
        print "self.test_var2 %d" % self.test_var2
        print "self.test_var3 %d" % self.test_var3
        print "self.test_var4 %d\n" % self.test_var4

if __name__ == "__main__" :
    test = ClassTest()
    test.run()

Al correr esto podemos comprobar que efectivamente las "test_var" no son
modificadas (esto es por como lo implementa Python el pasaje de argumentos,
segun pude leer). La idea es no repetir la logica que estaria implementada
en test_method, ya que sino tendria metodos repetidos dependiendo los
atributos tenga que utilizar. Algun workaround pythonero o alguna manera de
hacer posible la modificacion de las self.test_vars a traves de los args ?.
Gracias !

-- 
Saludos,
Lucas.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101120/8599137d/attachment.html>


More information about the pyar mailing list