Ответ 1
Вы вызываете экземпляр класса следующим образом:
o = object() # create our instance
o() # call the instance
Но это, как правило, дает нам ошибку.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'object' object is not callable
Как мы можем назвать экземпляр как предназначенный, и, возможно, извлечь из него что-то полезное?
Мы должны реализовать специальный метод Python, __call__
!
class Knight(object):
def __call__(self, foo, bar, baz=None):
print(foo)
print(bar)
print(bar)
print(bar)
print(baz)
Создайте экземпляр класса:
a_knight = Knight()
Теперь мы можем вызвать экземпляр класса:
a_knight('ni!', 'ichi', 'pitang-zoom-boing!')
который печатает:
ni!
ichi
ichi
ichi
pitang-zoom-boing!
И теперь мы действительно и успешно называем экземпляр класса!