__init__() конструктором, но на самом деле это не так.Настоящий конструктор в Python — это метод
__new__(). Давайте разберёмся, как это доказать, на небольшом примере.Сначала добавим несколько print-вызовов в метод
__init__(), чтобы понять, что происходит при создании экземпляра класса: (2 фото)Теперь добавим метод
__new__() и посмотрим, вызывается ли __init__() до или после __new__(). (3 фото)Если запустить этот код, станет видно, что первым вызывается именно метод
__new__()Хочу отметить, что в большинстве случаев вам не придётся использовать метод
__new__() в своём коде. На практике он применяется почти исключительно в метапрограммировании, фабричных функциях и при работе с API — по крайней мере, из того, что мне доводилось видеть.Так что продолжайте спокойно использовать проверенный метод
__init__() — он по-прежнему отлично справляется со своей задачей 😄👉 @PythonPortal


