Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
2428

Разница между методами __init__ и __call__ в Python

Часто встречается ситуация, когда при работе с объектно-ориентированным программированием в Python встает вопрос о различии между методами __init__ и __call__.


Часто встречается ситуация, когда при работе с объектно-ориентированным программированием в Python встает вопрос о различии между методами __init__ и __call__. Этот вопрос особенно актуален для новичков, которые только начинают осваивать язык.

Пример кода:

class MyTest:
    def __init__(self):
        self.a = 10

    def __call__(self):
        self.b = 20

В данном примере класс MyTest содержит два специальных метода __init__ и __call__.

Метод __init__ является инициализатором класса. Этот метод вызывается во время создания объекта класса и обычно используется для инициализации атрибутов класса. В примере выше, при создании объекта класса MyTest, метод __init__ автоматически устанавливает атрибут a равным 10.

test_object = MyTest()

print(test_object.a)  # Выведет: 10

Метод __call__, с другой стороны, делает экземпляр класса вызываемым. Это значит, что объект класса может быть использован как функция. При вызове объекта как функции, будет исполнен код внутри метода __call__. В примере выше, если вызвать объект test_object как функцию, то у него будет установлен атрибут b равный 20.

test_object()

print(test_object.b)  # Выведет: 20

В заключении, основная разница между методами __init__ и __call__ заключается в том, что __init__ используется для инициализации атрибутов объекта при его создании, в то время как __call__ делает объект вызываемым, позволяя использовать его как функцию.

Добавить комментарий