我不确定这是一个容易解决的问题,还是需要更深入地研究的问题。
假设我有一个对象Item
和变量Item.a
和Item.b
。
现在,我有这些对象的两个实例:Item1
和Item2
我需要的是这样的:
for (value_1, value_2) in [(Item1.a, Item2.a), (Item1.b, Item2.b)]:
if value_1 != value_2:
value_1 = value_2
当然,这只是更复杂问题的一个例子。替换是可以的,它可以找到对象之间的差异并将其替换。问题是,我一直在做这些变量的副本,而不是对象引用。一旦完成循环,我就可以同时打印
Item1
和Item2
,它们与before循环相同。是否有可能将引用传递到循环中?我知道如何使用列表,但是找不到对象的答案。
最佳答案
好吧,[(Item1.a, Item2.a), (Item1.b, Item2.b)]
只是创建了一些值的元组列表。通过创建此链接,您已经失去了与ItemX
的连接。您的问题与循环无关。
也许你想要
for prop in ('a', 'b'):
i2prop = getattr(Item2, prop)
if getattr(Item1, prop) != i2prop:
setattr(Item1, prop, i2prop)
或类似的方法,但也将
ItemX
传递给循环:for x, y, prop in ((Item1, Item2, 'a'), (Item1, Item2, 'b')):
yprop = getattr(y, prop)
if getattr(x, prop) != yprop:
setattr(x, prop, yprop)
关于python - 如何在python中的for循环中更改对象变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6856286/