首页 > 解决方案 > c = a + b; 如何使 c 始终反映对 a 或 b 所做的任何更改?

问题描述

我不确定表达这个问题的正确方法。我想将一些算术(带有指向其他“子变量”的引用/指针)分配/绑定到一个变量,并在任何贡献的“子变量”被更新时更新变量的值。

>>> a = 1
>>> b = 2
>>> c = a + b
>>> c
3
>>> a = 2
>>> c
3

在理想情况下,c 在此代码示例末尾的值为 4。

--

附加信息:我正在随机生成算术并希望能够嵌套这些变量(例如:d = a + c 将与 d = a + (a + b) 相同,其中 d 将反映发生的任何变化一或二)

标签: pythonpointers

解决方案


使用不可变的内置类型(如int. 因为aand绑定到不可b变类型(,并且为 的旧值起别名的类将保持不变;它不保留与自身的直接联系)。intaaaa

这可能起作用的唯一方法是,如果a并且b是可以更新或重新分配内容的可变类型,并且它们具有__add__/的重载__radd__,则产生了另一个类,该类存储对所述可变类型的实例和/或实例的引用本身(允许嵌套案例)。无论哪种方式,实现这样一套类都超出了简单答案的范围;我强烈建议您为您的问题找到不同的解决方案。


推荐阅读