擅长:python、mysql、java
<p>我只对PyCxx做了一点工作,我不在编译器工作,但我怀疑您所看到的与以下情况类似,如用纯Python表示的:</p>
<pre><code>>>> class C(object):
... def __getattribute__(self, key):
... print 'C', key
...
>>> class D(C):
... def __init__(self):
... self.foo = 1
...
>>> D().foo
C foo
>>>
</code></pre>
<P>我最好的猜测是,C++ ^ {< CD1>}方法应该检查^ {< CD2>}(当然,它将是子类的DICT,如果^ {CD3>}是子类的实例),并且如果在那里找不到^ {CD5>}(请参阅PyDISMIAPI函数),只调用^ {CD4>}。在</p>
<p>另外,我不认为您应该自己设置<code>tp_dealloc</code>:我看不出您的实现在PyCxx的默认<code>extension_object_deallocator</code>上有什么改进。在</p>