如何在python中更改for循环中的对象变量

Gan*_*ndi 6 python loops reference

我不确定,这是一个容易解决的简单问题,还是需要深入挖掘的东西.

假设我有一个Item带变量Item.a和对象的对象Item.b.现在我有两个这些对象的实例:Item1Item2

我需要的是这样的:

for (value_1, value_2) in [(Item1.a, Item2.a), (Item1.b, Item2.b)]:
    if value_1 != value_2:
        value_1 = value_2
Run Code Online (Sandbox Code Playgroud)

当然,这只是一个更复杂问题的例子.替换是可以的,它找到对象之间的差异并替换它们.问题是,我一直在这些变量的副本上进行,而不是在对象引用上.一旦它完成循环,我可以同时打印Item1Item2他们是一样的循环之前.

有没有可能将引用传递给循环?我知道如何使用列表,但我找不到对象的答案.

Fel*_*ing 10

好吧,[(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)
Run Code Online (Sandbox Code Playgroud)

或类似的东西,但也传递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)
Run Code Online (Sandbox Code Playgroud)