擅长:python、mysql、java
<p>在Python2中,使<code>Foo</code>从<code>object</code>继承以使其成为一个新样式的类:</p>
<pre><code>>>> class Foo(object):
... def __init__(self, val1):
... self.val1 = val1
...
>>> class Goo(Foo):
... def __init__(self, val1, val2):
... super(val1)
... self.val2 = val2
...
>>> f=Foo(1)
>>> f.__class__
<class '__main__.Foo'>
>>> f.__class__ = Goo
>>> f
<__main__.Goo object at 0x10e9e6cd0>
>>> type(f)
<class '__main__.Goo'>
</code></pre>
<p>现在你可以改变<code>self.__class__</code>。在<code>changeToGoo()</code>方法中:</p>
^{pr2}$
<p>或重复使用<code>__init__</code>:</p>
<pre><code>def changeToGoo(self)
self.__class__ = Goo
self.__init__(self.val1, 'some value')
</code></pre>
<p>这确实使你的对象有点怪异,因为它们改变了身份。变形很少是个好主意。您可能需要重新考虑您的用例。在</p>