Python 类中的变量列表

标签 python python-2.7

这是我的第一个问题,结合我的菜鸟身份,请随时告诉我是否应该采取完全不同的方式来解决这个问题!

无论如何,我正在构建一个程序,涉及使用 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/

相关文章:

python - tensorflow 中的矩阵减法类似于矩阵乘法

python - 将整个主循环包装在 try..finally block 中是否合理?

python 在从 .rtf 文件读取时添加乱码?

python - 在 dict 中操作字段和值并在 Python 中转换为元组

python - 使用 xlwt 编写日期格式

python - 计算数据框列的最小值、最大值和平均值

python - 如何在python中转储不带引号的json

python - 如何在Python中从Json中获取起源-命运矩阵?

python - 在Python中在另一个类中创建代理类

python-2.7 - 导入错误: No module named google_compute_engine