У меня есть этот пример кода, где я ожидал, что он напечатает текущую переменную test.x, но когда я использую цикл for для определения списка ссылок на функции, я не получаю то, m ожидая ([1,1] и [0,0]). Я получаю то, что ожидаю, когда вместо этого использую прокомментированные строки ([0,1] и [1,0]). Я понимаю, что есть более простые способы сделать это, но для моей программы мне нужно, чтобы это было так, но я хочу определить объект правил в цикле for, а не определять каждый элемент в строке, потому что я не знаю, как большой объект правил будет. Спасибо за любую помощь (Python 2,7)Python for loop инициализация ссылки на функцию
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))
Зачем вам копировать. 0 и 1? –
Я думаю, что проблема заключается в правилах [0], а правила [1] оба вызываются test.get_value (1), и я думал, что copy.copy может помочь, но это не –
Вы отметили вопрос python 2.7, но ваш код появляется be python 3 –