Часто встречается ситуация, когда при работе с объектно-ориентированным программированием в 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__ делает объект вызываемым, позволяя использовать его как функцию.
Перейти в телеграм, чтобы получить результаты теста





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