переназначить функцию python через __call__, чтобы использовать другую функцию - PullRequest
0 голосов
/ 25 октября 2018

Я попытался сделать несколько экстремальных патчей для обезьян и получил неожиданные результаты.Я переназначил метод __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
...