@immelnikoff
Изучаю БД

Как в Python 3 работает функция int()?

Только что посмотрел лекцию по функциональному программированию на Python 3.
Было сказано, что функция int() на самом деле сначала вызывает метод int.__new__, который создает объект в памяти и возвращает адрес на него, а затем метод int.__init__, который присваивает значение созданному объекту.
Проблема в том, что я так и не понял как создать переменную только с помощью int.__new__ и int.__init__...
Думал как-то так:
a=int.__init__(int.__new__, 12)
print(a)

, но print(a) возвращает None.
Так как правильно?
  • Вопрос задан
  • 603 просмотра
Пригласить эксперта
Ответы на вопрос 1
Kademn
@Kademn
Злой
Как в 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__.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы