Рубрики
Без рубрики

Python Callable () и __call __ ()

Python Callable, Python __call __ () Функция, Python Callable Object, экземпляр класса Python AS Ascress, Python Callable пример, код функции вызова Python

Автор оригинала: Pankaj Kumar.

Python Callable (объект) Функция возвращает Правда Если объект появляется Callable, в противном случае он возвращает Ложь Отказ

Python Callable и __call __ ()

Объект Python называется Callable, если они определяют __call __ () функция. Если эта функция определяется, тогда x (arg1, arg2, …) – это сокращение для x .__ Call __ (arg1, arg2, …).

Обратите внимание, что Callable () функция возвращает True, если объект появится Callable, возможно, что он возвращает True, даже если объект не является Callable. Однако, если эта функция возвращает false, то объект определенно не вызывается.

Кроме того, Класс Python всегда Callable. Итак, Всегда используйте Callable () с экземпляром класса, а не сам класс. Давайте посмотрим на простой пример, чтобы проверить это поведение.

class Person:
    i = 0

    def __init__(self, id):
        self.i = id


p = Person(10)
print('Person Class is callable = ', callable(Person))
print('Person object is callable = ', callable(p))

Выход:

Person Class is callable =  True
Person object is callable =  False

Python Callable () и __call __ () пример

Давайте определим класс с функцией __call __ ().

class Employee:
    id = 0
    name = ""

    def __init__(self, i, n):
        self.id = i
        self.name = n

    def __call__(self, *args, **kwargs):
        print('printing args')
        print(*args)

        print('printing kwargs')
        for key, value in kwargs.items():
            print("%s == %s" % (key, value))


e = Employee(10, 'Pankaj')  # creating object

print(e)  # printing object

print(callable(e))

* args используется для разрешения переменных аргументов в функцию __call __ ().

** kwargs используется для разрешения прохождения названных аргументов функции __call __ ().

Выход:

<__main__.Employee object at 0x107e9e1d0>
True

Давайте посмотрим на некоторые фрагменты кода, где мы будем использовать Callable (), чтобы проверить, является ли объект Callable, то вызовите экземпляр как функцию.

if callable(e):
    e()  # object called as a function, no arguments

    e(10, 20)  # only args
    e.__call__(10, 20)

    e(10, 20, {'x': 1, 'y': 2})  # only args of different types

    e(10, 'A', name='Pankaj', id=20)  # args and kwargs both

Выход:

printing args

printing kwargs
printing args
10 20
printing kwargs
printing args
10 20
printing kwargs
printing args
10 20 {'x': 1, 'y': 2}
printing kwargs
printing args
10 A
printing kwargs
name == Pankaj
id == 20

Это все для Python Callable () и __Call __ () функций.

Ссылка: Официальная документация Callable , Официальная документация Call.