Python cómo anular un método definido en un módulo de una biblioteca de terceros

He instalado una biblioteca de terceros tornado by pip y necesito anular un método , por ejemplo, to_unicode definido en el scope global de un módulo, por ejemplo tornado.escape . Para que todas las llamadas a ese método utilicen mi versión anulada. O tal vez, me gustaría controlarlo para que solo mi código use la versión anulada.

¡Si se hubiera definido dentro de una clase, no tendría ningún problema en subclasificar y anular el método! Pero como esto es solo un método, me pregunto cómo anularlo.

Sorprendentemente, no encontré una solución adecuada en SO, ¿es imposible lograr esto?

Puede simplemente volver a enlazar el nombre de un objeto (en este caso, una función de nivel de módulo) a un objeto diferente. Por ejemplo, si desea que math.cos trabaje con títulos en lugar de radianes , puede hacerlo

 >>> import math >>> math.cos(90) -0.4480736161291701 >>> old_cos = math.cos >>> def new_cos(degrees): ... return old_cos(math.radians(degrees)) ... >>> math.cos = new_cos >>> math.cos(90) 6.123233995736766e-17 

Sin embargo, eso podría causar problemas a otras funciones que usan ese módulo …