Я попытался сделать несколько экстремальных патчей для обезьян и получил неожиданные результаты.Я переназначил метод __call__
функции для указания другой функции.
Я ожидал изменить поведение функции, однако, похоже, что она сохранила свою первоначальную функцию.
- Разве класс
function
не является подклассом object
или это какой-то "экзотический" object
? - переопределяет ли он методы
__getattribute__
или __getattr__
?
Примечание : я знаю, что просто переназначение имени исходной функции нановая функция позволит достичь желаемых результатов.мой вопрос касается внутренней работы класса function
.
пример
def add(a,b):
return a+b
def minus(a,b):
return a-b
add.__call__ = minus
при запуске add
вы можете видеть, что он сохранил своиоригинальная функциональность
>>> add(1,2)
... 3