Tengo una clase, ubicada en un módulo separado, que no puedo cambiar.Monkey-patch Clase Python
from module import MyClass
class ReplaceClass(object)
...
MyClass = ReplaceClass
Esto no cambia MyClass en otro lugar que no sea este archivo. Sin embargo, si agrego un método como este
def bar():
print 123
MyClass.foo = bar
, esto funcionará y el método foo estará disponible en todas partes.
¿Cómo reemplazo la clase por completo?
+1 por ser más rápido. solo asegúrese de que esto se ejecute antes de cualquier importación que use 'módulo.MyClass' – aaronasterling
Ser más rápido no hace más correcto, pero realmente no creo que esto necesite una explicación adicional de todos modos. La diferencia debería ser bastante obvia una vez que vea cómo hacerlo. –
Asegúrate de ser el "primero" en importar la clase. ¡Las referencias ya hechas a la clase "vieja" no serán reemplazadas! –