: 弱引用字段, 通过构建类型时的tp_weaklistoffset 告知Python 虚拟机对应弱引用的偏移. - owned: 标识对象是否被 Python 虚拟机直接所有, 这种情况下 Python...Lua 类似, Lua 是通过 __call 这个元方法直接完成封装的, Python 此处的实现会稍微复杂一点, 需要结合一部分 Python 源码才方便理解. pybind11中整个 C++ 对象的构建过程如下图所示...retrun self;
}
真正负责对象构建的地方发生在 Python 源码部分, PyType_Type.tp_call() 调用最后会调用到 typeobject.c 中的 type_call()..., 在 C++ 构造函数匹配失败后被调用....的内存块, 再关联meta table的做法, 从上面的代码我们可以看到, pybind11 的实现中, Python对象的创建, 和对应C++对象的构建, 是完全分开的, 并不是我们向Python虚拟机请求一块内存做