<p>这不是对问题的直接回答,但在下面的帖子中,有一个阿米鲁切试图做的解决方案:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/2153295/python-object-conversion">Python object conversion</a></li>
<li><a href="https://stackoverflow.com/questions/8062161/can-i-dynamically-convert-an-instance-of-one-class-to-anotheramirouche">Can I dynamically convert an instance of one class to another?</a></li>
</ul>
<p>下面是工作代码示例(Python3.2.5)。</p>
<pre><code>class Men:
def __init__(self, name):
self.name = name
def who_are_you(self):
print("I'm a men! My name is " + self.name)
def cast_to(self, sex, name):
self.__class__ = sex
self.name = name
def method_unique_to_men(self):
print('I made The Matrix')
class Women:
def __init__(self, name):
self.name = name
def who_are_you(self):
print("I'm a women! My name is " + self.name)
def method_unique_to_women(self):
print('I made Cloud Atlas')
men = Men('Larry')
men.who_are_you()
#>>> I'm a men! My name is Larry
men.method_unique_to_men()
#>>> I made The Matrix
men.cast_to(Women, 'Lana')
men.who_are_you()
#>>> I'm a women! My name is Lana
men.method_unique_to_women()
#>>> I made Cloud Atlas
</code></pre>
<p>注意<code>self.__class__</code>而不是<code>self.__class__.__name__</code>。一、 e.这种技术不仅替换类名,而且实际转换类的实例(至少它们都有相同的<code>id()</code>)。另外,1)我不知道“在[object own]方法中用同一类型的另一个对象替换一个self对象是否安全”;2)它使用不同类型的对象,而不仅仅是使用同一类型的对象;3)它的工作方式与amirouche所希望的不完全一样:不能像<code>Class(args)</code>那样初始化类,只能<code>Class()</code>(我不是专业人士,不能回答为什么会这样)。</p>