в cpython исходный код, где python вызывает определенный пользователем __init__ при создании класса - PullRequest
1 голос
/ 02 августа 2020

Я читаю cpython реализацию класса исходного кода, я знал базовый c процесс определения и создания класса.

определение класса: load_build_class -> builtin_build_class -> mata -> type_call -> type_new

class create: type_call -> type_new

, и я знал, что определяемые пользователем функции хранятся в пространстве имен и, наконец, в tp_dict этого типа.

My вопрос: определяемая пользователем функция init хранится в типе-> tp_dict, когда python инициализирует тип, который он вызывает функцию type-> tp_init, я не могу найти где в cpython исходный код пользовательская функция init вызывается при создании класса.

1 Ответ

0 голосов
/ 03 августа 2020

Я сам найду результат, type_new вызовет PyType_Ready и fixup_slot_dispatchers, в более поздних функциях пользовательская функция будет обрабатываться в слотах.

...