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