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

标签 python loops reference

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

假设我有一个对象 Item,它带有变量 Item.aItem.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

当然这只是一个更复杂问题的例子。替换是可以的,它发现对象之间的差异并替换它们。问题是,我一直在对这些变量的副本进行操作,而不是对对象引用进行操作。一旦它完成循环,我就可以同时打印 Item1Item2,它们与之前的循环相同。

是否有可能将引用传递到循环中?我知道如何使用列表来做到这一点,但我找不到对象的答案。

最佳答案

好吧,[(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/

相关文章:

python - 读取用户输入的第一个数字

Python 最佳实践 : class definition inside function?

python - 从 tesseract hocr xhtml 文件中提取数据

python - flask 上的getlist

php - 在PHP和MySql中创建一个累积比较表

python:在for循环中获取下一个项目

php:如何foreach一个多维数组?

c++ - 在 map 容器中使用映射值重载 << 运算符

c# - 通过 RealProxy 引用参数

visual-studio - 两个项目之间的跨项目引用