【发布时间】:2015-04-21 16:11:51
【问题描述】:
我有这个示例代码,我希望它打印当前的 test.x 变量,但是当我使用 for 循环来定义函数引用列表时,我没有得到我期望的结果([1,1]和 [0,0])。当我改用注释行([0,1] 和 [1,0])时,我确实得到了我所期望的。我意识到有更简单的方法可以做到这一点,但对于我的程序,我需要它是这样的,但我想在 for 循环中定义规则对象,而不是在一行上定义每个元素,因为我不知道如何规则对象将很大。感谢您的帮助(Python 2.7)
class TestClass:
def __init__(self):
self.x = list([0, 1])
def get_value(self, i):
return self.x[i]
test = TestClass()
rules = list([None, None])
for a in range(2):
rules[a] = lambda t: test.get_value(a)
#rules[0] = lambda t: test.get_value(0)
#rules[1] = lambda t: test.get_value(1)
print(rules[0](0), rules[1](0))
test.x[0] = 1
test.x[1] = 0
print(rules[0](0), rules[1](0))
【问题讨论】:
-
你为什么要copy.copy一个0和一个1?
-
我认为问题是 rules[0] 和 rules[1] 都在调用 test.get_value(1) 我认为 copy.copy 可能会有所帮助,但它不是
-
您标记了问题 python 2.7,但您的代码似乎是 python 3
标签: python python-2.7