擅长:python、mysql、java
<p>实际上,在Python中可以分配给<code>self.__class__</code>,但是您必须知道自己在做什么。这两个类在某些方面必须兼容(都是用户定义的类,都是旧样式或新样式,我不确定是否使用<code>__slots__</code>)。此外,如果您执行<code>pawn.__class__ = Queen</code>,典当对象将不会由皇后构造函数构造,因此预期的实例属性可能不存在等</p>
<p>另一种方法是像这样的复制构造函数:</p>
<pre><code>class ChessPiece(object):
@classmethod
def from_other_piece(cls, other_piece):
return cls(other_piece.x, other_piece.y)
</code></pre>
<p><strong>编辑</strong>:另请参见<a href="https://stackoverflow.com/questions/4838145/assigning-to-an-instances-class-attribute-in-python">Assigning to an instance's __class__ attribute in Python</a></p>