首页 > 解决方案 > 有没有办法改变一个对象的属性分配给另一个对象的属性?

问题描述

我想更改已分配为另一个对象的属性的对象的属性。

cageNumber = int(input('Cage number: '))
mouseNumber = int(input('Mouse number: '))
mouseID = f'm{mouseNumber}'
setattr(cages[cageNumber].mouseID, 'sacrificed', True)

笼子是一个类的实例,每个笼子有 5 个属性。每只鼠标都是一个类的实例,它们被指定为笼子对象的属性。笼子包含在字典中。

我的笼子没有名为 的属性mouseID,但它有 5 个名为
m1m2m3m4和的属性m5。这些都解决了mouseID = f'm{mouseNumber}'

我想做这样的事情:cage[101].m3.sacrificed = True对于 5 只老鼠
(m1 - m5) 中的每一只。

标签: python

解决方案


如果我了解您要查找的内容,则需要使用调用来getattr()按名称获取属性作为字符串。另外,我真的没有理由在setattr()这里使用。

getattr(cages[cageNumber], mouseID).sacrificed = True

虽然如果你经常做这种事情(即使你不是),将 , 等放入列表或 dict 以便于索引可能会不那么麻烦m1m2所以你可以改为做类似的事情:

cages[cageNumber].mice[mouseID].sacrificed = True

推荐阅读