Я пытаюсь изучить currying в Python для своего класса, и мне нужно перегрузить оператор() для него. Однако я не понимаю, как я могу перегружать оператор(). Можете ли вы объяснить логику перегрузки круглых скобок? Должен ли я сначала перегружать (а затем), или я могу сделать что-нибудь из этого? Кроме того, существует специальное имя для оператора скобок?
Оператор overload() в Python
Ответ 1
Вы можете сделать объект вызываемым, реализовав метод __call__
:
class FunctionLike(object):
def __call__(self, a):
print("I got called with {!r}!".format(a))
fn = FunctionLike()
fn(10)
# --> I got called with 10!