随处替换一个python对象

jdm*_*jdm 5 python python-2.7

如何在各处使用另一个对象替换python对象?

我有两个课,SimpleObjectFancyObject。我创建了一个SimpleObject,并且有多个引用。现在,我想创建一个FancyObject,并使所有这些引用都指向新对象。

a = SimpleObject()
some_list.append(a)
b = FancyObject()
Run Code Online (Sandbox Code Playgroud)

a = b不是我想要的,只是改变了要指向的内容。我阅读了以下内容,但没有用。我收到一个错误“属性__dict__不可写”:

a.__dict__ = b.__dict__
Run Code Online (Sandbox Code Playgroud)

我想要的是(pseudo-C)的等效项:

*a = *b
Run Code Online (Sandbox Code Playgroud)

我知道这很骇人,但是有什么办法可以做到这一点?

use*_*ica 2

不可能。它会让你改变不可变的对象并导致各种肮脏的事情。

x = 1
y = (x,)
z = {x: 3}
magic_replace(x, [1])
# x is now a list!
# The contents of y have changed, and z now has an unhashable key.

x = 1 + 1
# Is x 2, or [1, 1], or something stranger?
Run Code Online (Sandbox Code Playgroud)