Что такое "вызываемый"? - PullRequest
       34

Что такое "вызываемый"?

273 голосов
/ 21 сентября 2008

Теперь, когда ясно, , что такое метакласс , существует связанная концепция, которую я использую все время, не зная, что это на самом деле означает.

Я полагаю, что все однажды допустили ошибку с круглыми скобками, что привело к исключению "объект не вызывается". Более того, использование __init__ и __new__ заставляет задуматься, для чего можно использовать этот кровавый __call__.

Не могли бы вы дать мне некоторые объяснения, в том числе примеры с магическим методом?

Ответы [ 12 ]

1 голос
/ 07 апреля 2017

Callable - это тип или класс «встроенной функции или метода» с методом вызов

>>> type(callable)
<class 'builtin_function_or_method'>
>>>

Пример: print является вызываемым объектом. Со встроенной функцией __ call __ Когда вы вызываете функцию print , Python создает объект типа print и вызывает его метод __ call __ , передавая параметры, если они есть.

>>> type(print)
<class 'builtin_function_or_method'>
>>> print.__call__(10)
10
>>> print(10)
10
>>>

Спасибо. С Уважением, Maris

1 голос
/ 08 мая 2012

callables реализуют специальный метод __call__, поэтому любой объект с таким методом может быть вызван.

...