擅长:python、mysql、java
<p>好吧,我找到了一个适合我具体使用的解决方案。我不太了解python的内部结构,不知道它是否会以意想不到的方式崩溃。我很想知道这是一件危险的事情。我也很感兴趣,如果有人有任何的想法,在这种情况下,这不会做什么,我期待它。我会等几天把这个标记正确,以防有人认为这实际上是灾难性的。在</p>
<pre><code>def replaceobject(obj1,obj2):
#Replaces obj1 with obj2
obj1.__dict__ = obj2.__dict__
class MyClass:
def __init__(self):
self.attr0 = None
self.attr1 = None
self.attr2 = None
self.attr3 = None
def set_some_attrs(self):
self.attr0 = 0
self.attr1 = "1"
self.attr2 = {"2":2}
self.attr3 = [3]
#Set up scenario, three objects of the same type, one points to a different address
A = MyClass()
A.set_some_attrs()
C = A
B = MyClass()
#Make replacement and spit contents
replaceobject(B,A)
print B.attr0 #=> 0
print B.attr1 #=> "1"
print B.attr2 #=> {"2":2}
print B.attr3 #=> [3]
#Modify the replaced object and changes are reflected
B.attr2 = "made a change"
print A.attr2 #=> "made a change"
print C.attr2 #=> "made a change"
</code></pre>