【发布时间】:2019-07-09 03:53:50
【问题描述】:
我想实现与在 python 中使用不可变整数复制可变变量时相同的行为。如:
>>>b = [3,4]
>>>a = b
>>>a
[3,4]
>>>b.append(2)
>>>b
[3,4,2]
>>>a
[3,4,2]
但我有以下内容,而不是列表:
>>>b = 3
>>>a = b
>>>a
3
>>>b += 1
>>>b
4
>>>a
3
这不是我想要的,理想情况下,我希望 a 更新为 b 的新值,即 4。所以本质上是一个指针。
如何在 python 中实现这一点?
【问题讨论】:
-
int 在 python 中是不可变的,所以你要找的东西是不可能的。
-
你不能直接这样做,但你可以创建一个包含整数的类;那么,就像你的例子一样,不同的变量可以引用同一个实例。
-
为什么要这样做?如果你能解释你想要这种行为的原因,也许我们可以提出一些替代方案。
-
@ParitoshSingh 这并不重要,只是易用性的问题。我有一个结构对象,我希望能够引用它作为“容器”工作的对象之一的属性,即:
class struct():...、class segment():...,其中segment具有属性speed,所以希望能够做到struct.speed,并让它返回segment.speed。但显然简单地将两者等同起来是行不通的,因为整数是不可变的。
标签: python pointers immutability mutable