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