Какая функция используется для вызова объекта класса в ООП на Python?

Существует функция init, которая вызывается при инициализации объекта класса

class NewClass:
    def __init__(self):
        Действия, которые выполняются при инициализации объекта

У меня вопрос: существует ли функция, которая вызывается при вызове объекта? Например, что я имею ввиду:

class NewClass:
    def __названиеискомойфункции__(self):
        print("Функция была вызвана")

затем сделаем так:

myobj1 = NewClass()
n1 = myobj1
n2 = myobj1
n3 = myobj1

Предполагаемый вывод:

Функция была вызвана
Функция была вызвана
Функция была вызвана

Ответы (1 шт):

Автор решения: Gleb Kublahanov

В Python есть специальный метод __call__(), который вызывается при вызове объекта как функции. Вот пример:

class NewClass:
    def __call__(self):
        print("Функция была вызвана")

myobj1 = NewClass()
n1 = myobj1()  # Вызывается метод __call__()
n2 = myobj1()  # Вызывается метод __call__()
n3 = myobj1()  # Вызывается метод __call__()

В этом примере метод __call__() будет вызываться при каждом обращении к объекту myobj1 как к функции, что приведет к ожидаемому выводу:

Функция была вызвана
Функция была вызвана
Функция была вызвана
→ Ссылка