Monkey parcheando una clase en otro módulo en Python

Estoy trabajando con un módulo escrito por otra persona. Me gustaría parchear el__init__ Método de una clase definida en el módulo. Todos los ejemplos que he encontrado que muestran cómo hacer esto suponen que yo mismo llamaría a la clase (por ejemplo,Clase Python de parche de mono). Sin embargo, éste no es el caso. En mi caso, la clase se inicia dentro de una función en otro módulo. Vea el ejemplo (muy simplificado) a continuación:

tercerpartymodule_a.py

class SomeClass(object):
    def __init__(self):
        self.a = 42
    def show(self):
        print self.a

tercerpartymodule_b.py

import thirdpartymodule_a
def dosomething():
    sc = thirdpartymodule_a.SomeClass()
    sc.show()

mymodule.py

import thirdpartymodule_b
thirdpartymodule.dosomething()

¿Hay alguna manera de modificar el__init__ método deSomeClass de modo que cuandodosomething se llama desde mymodule.py, por ejemplo, imprime 43 en lugar de 42? Lo ideal sería poder envolver el método existente.

No puedo cambiar los archivos de terceros partymodule * .py, ya que otros scripts dependen de la funcionalidad existente. Prefiero no tener que crear mi propia copia del módulo, ya que el cambio que debo hacer es muy simple.

Editar 2013-10-24

Pasé por alto un pequeño pero importante detalle en el ejemplo anterior.SomeClass es importado porthirdpartymodule_b Me gusta esto:from thirdpartymodule_a import SomeClass.

Para hacer el parche sugerido por F.J necesito reemplazar la copia enthirdpartymodule_b, más bien quethirdpartymodule_a. p.ej.thirdpartymodule_b.SomeClass.__init__ = new_init.

Respuestas a la pregunta(6)

Su respuesta a la pregunta