【问题标题】:in cpython source code where python call user defined __init__ when creating class在创建类时python调用用户定义的__init__的cpython源代码中
【发布时间】:2020-08-02 17:24:36
【问题描述】:

我在看cpython源码类实现,知道类定义和创建的基本流程。

类定义: load_build_class -> builtin_build_class -> mata -> type_call -> type_new

类创建: type_call -> type_new

我知道用户定义的函数存储在命名空间中,最后存储在该类型的 tp_dict 中。

我的问题:用户定义的init函数存储在type->tp_dict中,当python初始化一个类型时它调用type->tp_init函数,我在cpython源代码中找不到用户创建类时调用定义的init函数。

【问题讨论】:

    标签: init cpython


    【解决方案1】:

    自己找结果,type_new会调用PyType_Ready和fixup_slot_dispatchers,后面函数中用户定义的函数会在slot中处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多