Sobrecarga dinamica de metodos en instancia
Oswaldo Hernández
listas en soft-com.es
Mar Jun 6 12:50:40 CEST 2006
Jaime Perea escribió:
> El Martes, 6 de Junio de 2006 11:29, Oswaldo Hernández escribió:
>
>>Hola a todos,
>>
>>Estoy intentando realizar una sobrecarga de metodos de forma dinamica y
>>me presenta algún problema, intentaré explicarme:
>>
>>#Defino la clase 'x' con un método 'a':
>> >>> class x:
>>
>> def a(self, val):
>> print val + 1
>>
>># Creo una instancia de esta clase
>>
>> >>> ix = x()
>> >>> ix.a(1)
>>
>>2
>>
>># creo un nuevo metodo y reemplazo el existente en la instancia 'ix'
>>
>> >>> def nuevo_a(self, val):
>>
>> print val - 1
>>
>> >>> setattr(ix, "a", nuevo_a)
>> >>>
>> >>> ix.a(1)
>
>
> a mi me funciona con
> ix.a = nuevo_a
>
> ix.a(7)
> 6
>
Habia probado tambien asi y me da el mismo problema:
>>> ix.a = nuevo_a
>>> ix.a(7)
Traceback (most recent call last):
File "<pyshell#65>", line 1, in -toplevel-
ix.a(7)
TypeError: nuevo_a() takes exactly 2 arguments (1 given)
Mi version de python es (no se si tendrá algo que ver):
Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Gracias.
--
*****************************************
Oswaldo Hernández
oswaldo en soft-com.es
*****************************************
Más información sobre la lista de distribución Python-es