__init__ vs. __call__ em Python

Em Python, __init__ é chamado sempre que uma nova instância de uma classe é criada. O método __call__ é usado para implementar um operador de chamada de função.

Se você criar uma instância de uma classe, como por exemplo uma instância de agente da classe Agente, então, se o método __call__ for implementado, você poderá chamar a instância como qualquer chamada de função. Você pode fazer a chamada assim: agent( args ) . Fazê-lo vai executar a lógica implementada no corpo do método __call__

Um objeto que implementa o método __call__ é chamado de “callable” no Python. Ou seja, neste caso as instâncias da classe Agent seriam chamadas se a classe Agent implementasse uma definição do método __call__ .