<p>我以为Python中的所有函数和方法参数都是通过引用传递的,这使我相信以下代码可以工作:</p>
<pre><code>class Insect:
def status(self):
print "i am a %s" % self
class Caterpillar(Insect):
def grow_up(self):
self = Butterfly() # replace myself with a new object
return
class Butterfly(Insect):
pass
my_obj = Caterpillar()
my_obj.status() # i am a <__main__.Caterpillar instance at 0x100494710>
# ok, time to grow up:
my_obj.grow_up()
my_obj.status() # want new Butterfly object, but it is still Caterpillar! :(
</code></pre>
<p>如何在方法调用中更改对象本身?在</p>
<p>--编辑:</p>
<p>到目前为止,得到的答复是:</p>
<p>1)更改自身。更改与当前对象关联的类。<br/>
2) “别这样。”</p>
<p>最初的问题是:如何在旧类上定义的方法调用中生成一个新的对象来代替旧的对象?在</p>
<p>我想答案可能是“你不能”</p>
<p>——编辑2:</p>
<p>为什么每个人都害怕说“不可能”?在</p>