[Python-es] como hacer __dict__[i] = x sobre una clase ??

Juan BC jbc.develop en gmail.com
Sab Jun 29 18:42:17 CEST 2013


la forma correcta de hacer obj.__dict__["m"] = f es

setattr(obj, "m", f)

para lo mismo en una clase es

setattr(C, "m", f)

El día 29 de junio de 2013 13:39, Jose Caballero
<jcaballero.hep en gmail.com> escribió:
> Hola,
>
>
>
> como podria substituir el metodo de una clase por una funcion (no
> estoy hablando de sobreescribir o "override")?
>
>
> Por ejemplo, supongamos una clase sencilla como:
>
>     class C:
>         def m(self, x):
>              print x
>
>
> y quiero substituir m() por una funcion predefinida, como
>
>     def f(x): print x*x
>
> puedo hacer
>
>     obj = C()
>     obj.__dict__["m"] = f
>
>
> Pero como puedo hacerlo sobre la propia clase, no sobre un objeto?
> Hacer   C.__dict__["m"] = f    no esta permitido....
>
> Cualquier referencia a una web donde pueda documentarme sera mas que
> bien acogida.
>
>
>
>
> Muchas gracias.
> Un saludo,
> Jose
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/



-- 
Juan B Cabral


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