这是我的第一个问题,结合我的菜鸟身份,请随时告诉我是否应该采取完全不同的方式来解决这个问题!
无论如何,我正在构建一个程序,涉及使用 Python 2.7 中的四色定理为 map 着色,尝试尽可能多地使用某些颜色,并且在运行类似以下代码时遇到了问题:
在一个模块中:
class state:
a = 0
b = 0
variable_list = [a,b]
然后我将该模块导入到我的主程序中:
from State import state //State(uppercase "s") is the .py file with the state class in it
instance = state()
instance.a = 1
print instance.variable_list[0]
...程序打印 0,尽管在主程序中进行了更改。关于如何通过更改更新 instance.variable_list 有什么想法吗?
最佳答案
您必须根据指针来考虑 Python 变量。您的问题实际上可以归结为以下几点:
>>> a = 42
>>> l = [a]
>>> a = 0
>>> print l[0] # shouldn't this print 0?
42
答案是否定的,因为重新分配a
与列表l
无关。该列表包含指向内存中某些对象的指针。 l[0]
恰好指向与 a
相同的对象(int 42
)。当我们重新分配 a
时,我们只是让它“指向”内存中的一个新对象(int 0
)。这与列表l
无关。
看起来像这样:
a = 42 l = [a] +----+ a -----> | 42 | <------ l[0] +----+ a = 0 +----+ l[0] ---> | 42 | +----+ +---+ a ------> | 0 | +---+
请注意,l[0]
并未更改。
关于Python 类中的变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419150/