擅长:python、mysql、java
<p>虽然您可以在<code>__init__</code>中更改类,但在<code>__new__</code>中进行更改更为合适。前者用于初始化,后者用于施工:</p>
<pre><code>class A(object): pass
class B(object): pass
class C(object):
def __new__(cls, base_type, *args, **kwargs):
return super(C, cls).__new__(base_type, *args, **kwargs)
assert isinstance( C(A), A )
assert isinstance( C(B), B )
</code></pre>
<p>使用<code>__init__</code>,您将创建一个C实例,然后修改其类型。使用<code>__new__</code>,您永远不会创建C的实例,只需要创建所需的<code>base_type</code>。在</p>