Метод __call__ в ООП в Python
Специальный метод __call__ вызывается,
когда объект используют как функцию:
после переменной с объектом ставят
круглые скобки. Так объект может
хранить состояние и при этом
выполнять действие по вызову.
Пусть у нас есть класс Multiplier,
который хранит число-множитель:
class Multiplier:
def __init__(self, factor):
self.factor = factor
Добавим метод __call__, чтобы
умножать переданное число на множитель:
class Multiplier:
def __init__(self, factor):
self.factor = factor
def __call__(self, value):
return value * self.factor
Создадим объект и вызовем его как функцию:
double = Multiplier(2)
print(double(5)) # выведет 10
Сделайте класс Greeter, который
в конструкторе запоминает строку приветствия.
Реализуйте __call__: при вызове
объекта возвращайте приветствие
и переданное имя.