擅长:python、mysql、java
<p>首先回答最后一个问题:不,<code>type_new</code>只用于在运行时动态定义的“堆类型”(例如通过class语句)。静态定义的类型使用<code>PyType_Ready()</code>初始化。在</p>
<p>要回答第一个问题:要使用<code>__dict__</code>描述符创建扩展类型,需要像解释器为类定义所做的那样动态分配类型。在</p>
<p>获取例子的一种方法是按照John的建议来做,并用Cython生成一些自己的例子。在</p>
<p>对于cpython2.x,您可以查看CPython源代码(<a href="http://svn.python.org/view/python/trunk/Python/ceval.c?view=markup" rel="nofollow noreferrer">http://svn.python.org/view/python/trunk/Python/ceval.c?view=markup</a>)中的<code>build_class</code>方法,以了解完全通用解决方案中涉及的步骤。在</p>
<p>如果您使用的是python3,那么这个问题可能会引起您的兴趣:<a href="https://stackoverflow.com/questions/1832997/what-does-pythons-builtin-build-class-do">What does Python's builtin __build_class__ do?</a></p>
<p>也就是说,作为一个特定于cpython3.x的解决方案,最简单的方法就是通过C API使用适当的参数调用<code>builtins.__build_class__</code>。在</p>