擅长:python、mysql、java
<p><code>self.__class__ = Butterfly</code>可能有用,因为它重新绑定了一个<strong>限定的</strong>名称(这是一个完全不同于重新绑定<strong>裸</strong>名称的事情)。在</p>
<p>重新绑定一个裸名永远不会对之前绑定到它的任何对象产生任何影响(除非该裸名是对“前一个对象”的唯一引用,在这种情况下,后者可能会被破坏——但这里显然不是这样,{{cdm>不能与<cd2}的引用相同。在</p>
<p><strong>编辑</strong>:</p>
<p>您提到需要初始化新重新分类的对象—这很简单:</p>
<pre><code>self.__dict__.clear()
self.__class__ = Butterfly
self.__init__(whatever, you, want)
</code></pre>
<p>但是在你提到需要“备份属性”的评论中——我不知道你到底是什么意思,也不知道为什么这与你直接分配给<code>self</code>的“梦幻案例”有什么不同(这当然也会把属性吹走)。也许这个想法是<code>__init__</code>的(一些)参数必须是<code>self</code>的属性?然后,例如,您可以编写如下代码:</p>
^{pr2}$