Małpa łatająca klasę w innym module w Pythonie

Pracuję z modułem napisanym przez kogoś innego. Chciałbym małpować łatkę__init__ metoda klasy zdefiniowanej w module. Przykłady, które znalazłem, pokazujące, jak to zrobić, zakładają, że sam będę nazywał klasę (np.Klasa Pythona z łatką Monkey). Jednak tak nie jest. W moim przypadku klasa jest inicjowana w ramach funkcji w innym module. Zobacz (znacznie uproszczony) przykład poniżej:

thirdpartymodule_a.py

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

thirdpartymodule_b.py

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

mymodule.py

import thirdpartymodule_b
thirdpartymodule.dosomething()

Czy jest jakiś sposób na modyfikację__init__ metodaSomeClass więc kiedydosomething jest wywoływany z mymodule.py, na przykład wypisuje 43 zamiast 42? Idealnie byłbym w stanie owinąć istniejącą metodę.

Nie mogę zmienić plików * .py trzeciegopartymodule, ponieważ inne skrypty zależą od istniejącej funkcjonalności. Wolałbym nie tworzyć własnej kopii modułu, ponieważ zmiana, którą muszę wprowadzić, jest bardzo prosta.

Edytuj 2013-10-24

W powyższym przykładzie przeoczyłem mały, ale ważny szczegół.SomeClass jest importowany przezthirdpartymodule_b lubię to:from thirdpartymodule_a import SomeClass.

Aby zrobić łatkę sugerowaną przez F.J, muszę ją zastąpićthirdpartymodule_braczej niżthirdpartymodule_a. na przykładthirdpartymodule_b.SomeClass.__init__ = new_init.

questionAnswers(6)

yourAnswerToTheQuestion