Python 部分参数重复

Python 部分参数重复,python,kivy,partial,Python,Kivy,Partial,我正在为循环中的button behavior对象创建on_press回调,由于某些原因,该部分的所有参数与上次创建的部分的参数保持相同。 创建的简化示例: (button是实现按钮行为的类) 问题是参数arg1和arg2与循环的上一次迭代保持相同,而不是更新。因此,当我按下按钮(不管是哪一个)时,回调被调用,就好像我按下了最后一个按钮一样 为什么会发生这种情况/我如何解决这个问题?在代码段参数arg1中,arg2不会更改。因为您从未更改arg1或arg2。相反,按钮。arg1和按钮。arg2在

我正在为循环中的button behavior对象创建
on_press
回调,由于某些原因,该部分的所有参数与上次创建的部分的参数保持相同。 创建的简化示例: (button是实现按钮行为的类)

问题是参数
arg1
arg2
与循环的上一次迭代保持相同,而不是更新。因此,当我按下按钮(不管是哪一个)时,回调被调用,就好像我按下了最后一个按钮一样


为什么会发生这种情况/我如何解决这个问题?

在代码段参数
arg1
中,
arg2
不会更改。因为您从未更改
arg1
arg2
。相反,
按钮。arg1
按钮。arg2
在定义
部分
对象时进行计算,当您实际单击按钮时不会。您确定
arg1
arg2
对于
列表中的所有按钮都不相同吗<代码>打印
在每次迭代中都会显示。@leaf不完全正确,我确实更改了它们,正如您从更新的代码片段中可以看出的那样。我确实在实际代码中更改了它们(这太长了,无法在这里发布有意义的部分)。
for button in list:
    button.on_press=partial(my_func, button, button.arg1, button.arg2)