Как в Python 3 работает функция int()?
В первую очередь необходимо отметить, что
int
это встроенный класс, а не функция. Да, фактически его используют как функцию, и даже в
документации его можно найти в разделе built-in funcitons, но технически это класс.
print(a) возвращает None
Вы переменной
a
присваиваете результат работы метода
__init__
, но этот метод никогда ничего не возвращает, он необходим, чтобы изменять состояние объекта у которого он был вызван. В самом вашем вопросе уже есть объяснение что и как работает.
Так как правильно?
a = 12
a = int(12)
a = int.__new__(int, 12)
В каждом из этих трех случаев будут работать методы
__new__
и
__init__
. Python так устроен, что у всех объектов есть эти методы, они вызываются самим интерпретатором и вам не нужно делать это самостоятельно.
Сначала вызывается метод
__new__
, этот метод возвращает объект (только что созданный инстанс), и у этого объекта вызывается метод
__init__
.