Como se chama um exemplo de uma aula em Python?

Isto é inspirado por uma pergunta que acabei de ver, "mude o que é devolvido chamando instância de classe", mas foi rapidamente respondida com {[[1]} (e aceite, de modo que o autor da pergunta não pretendia realmente chamar a instância).

Agora chamar uma instância de uma classe pode ser feito assim:
instance_of_object = object() 
instance_of_object()
Mas vamos ter um erro, Algo do género.

este comportamento é definido no código CPython aqui.

Então, para garantir que temos esta questão em Stackoverflow:

Como se chama uma instância de uma classe em Python?

Author: Aaron Hall, 2014-06-17

1 answers

Você chama uma instância de uma classe como no seguinte:

o = object() # create our instance
o() # call the instance
Mas isto normalmente nos dará um erro.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'object' object is not callable
Como podemos chamar o caso como pretendido, e talvez obter algo útil dele?

Temos de implementar o método especial Python, __call__!

class Knight(object):
    def __call__(self, foo, bar, baz=None):
        print(foo)
        print(bar)
        print(bar)
        print(bar)
        print(baz)

Instanciar a classe:

a_knight = Knight()
Agora podemos chamar a instância de classe:
a_knight('ni!', 'ichi', 'pitang-zoom-boing!')

Que imprime:

ni!
ichi
ichi
ichi
pitang-zoom-boing!
E temos agora, na verdade, e com sucesso., chama uma instância da classe!
 30
Author: Aaron Hall, 2016-09-26 21:19:26