有没有办法更改分配给另一个对象属性的对象属性?

时间:2018-12-28 18:10:03

标签: python

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

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

该笼是类的实例,每个笼具有5个属性。每个鼠标都是一个类的实例,它们被分配为笼形对象的属性。笼子包含在字典中。

我的笼子没有名为mouseID的属性,但是它有5个名为
的属性 m1m2m3m4m5。这些可以通过mouseID = f'm{mouseNumber}'解决。

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

1 个答案:

答案 0 :(得分:0)

如果我了解您要查找的内容,则需要使用对getattr()的调用来按名称获取字符串形式的属性。另外,我真的看不出在这里使用setattr()的原因。

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

尽管您经常做这种事情(即使您没有这样做),将m1m2等放入列表中也不会那么麻烦或dict,以便更轻松地建立索引,因此您可以执行以下操作:

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