小编Lin*_*iao的帖子

如何在python中交换2个对象的身份?

我有2个实例xy同一个类RBnode.有没有交换自己的身份,让所有参考的方式xy,反之亦然?

例如,

x = RBnode()
y = RBnode()
x.data = 1
y.data = 2
L = [x,y]

exchange_identity(x,y)
print x.data, y.data, (L[0] is y)

>>> 2 1 True
Run Code Online (Sandbox Code Playgroud)

实际上我正在构建红黑树的扩展.树的节点被实现为对象.在编写节点删除方法时,我需要交换两个节点,以便要删除的节点位于树的"底部".

首先,我尝试在两个节点中交换数据:

def remove_node(self, y):
    ''' remove node y from tree
    return (y.key,y.value) if successful'''
... ... ...

    # exchange y's data with that of its successor y.next 

    y.key = y.next.key
    y.value = y.next.value
Run Code Online (Sandbox Code Playgroud)

但后来remove_node调用时发生错误,调用函数持有对节点的引用x,这恰好是y.next.就像是

x …
Run Code Online (Sandbox Code Playgroud)

python identity object memory-address

2
推荐指数
1
解决办法
171
查看次数

标签 统计

identity ×1

memory-address ×1

object ×1

python ×1