Я пытаюсь изучить исправление обезьяны Python. У меня есть простой пример, когда я пытаюсь исправить только один экземпляр, а не сам класс.
Мой код:
# add.py
import types
class Math(object):
def __init__(self):
self.name = ''
def add(self, x, y, name):
self.name = name
print 'calling from ', self.name
return x + y
def monkey_patch(self):
add = self.add
def squared_sum(x, y):
return x**2 + y**2
add = types.MethodType(squared_sum, self)
if __name__ == '__main__':
math = Math()
print math.add(3, 4, 'before monkey_patching')
math.monkey_patch()
print math.add(3, 4, 'after monkey_patching')
Ожидаемый результат:
calling from before monkey_patching
7
calling from after monkey_patching
25
Созданные выходные данные:
calling from before monkey_patching
7
calling from after monkey_patching
7
Может кто-нибудь указать, где я ошибаюсь. А также как я могу исправить метод добавления обезьяны, когда я делаю это из другого файла, то есть когда я импортирую класс Math из add.py в другой файл, как я могу исправить его метод добавления.