Cuando hago lo siguiente:añadir dinámicamente función miembro de una instancia de una clase en Python
class C:
pass
def f(self):
print self
a = C()
a.f = f
a.f()
me sale el siguiente error en la línea af(): TypeError: f() toma exactamente 1 argumento (0 dado)
El problema parece ser que cuando se agrega f a la instancia, a, se trata como una función que está almacenada dentro de una función miembro, en lugar de una función miembro real. Si cambio a.f() a a.f (a), entonces obtengo el efecto deseado, pero ¿hay alguna manera de hacer que python interprete el ejemplo original de esta manera? En otras palabras, ¿hay alguna manera de agregar una función miembro a una instancia de una clase en tiempo de ejecución?
Gracias
Esta es la manera de agregar la función a la instancia específica 'a' (otras instancias de la clase' C' no tendrán 'f'). – Dave
'Cf = types.MethodType (f, None, C)' sería el código para agregar la función a cualquier instancia existente o eventual de la clase C – Julius