我想更改已分配为另一个对象的属性的对象的属性。
cageNumber = int(input('Cage number: '))
mouseNumber = int(input('Mouse number: '))
mouseID = f'm{mouseNumber}'
setattr(cages[cageNumber].mouseID, 'sacrificed', True)
该笼是类的实例,每个笼具有5个属性。每个鼠标都是一个类的实例,它们被分配为笼形对象的属性。笼子包含在字典中。
我的笼子没有名为mouseID
的属性,但是它有5个名为
的属性
m1
,m2
,m3
,m4
和m5
。这些可以通过mouseID = f'm{mouseNumber}'
解决。
我想做这样的事情:cage[101].m3.sacrificed = True
每5只老鼠
(m1-m5)。
答案 0 :(得分:0)
如果我了解您要查找的内容,则需要使用对getattr()
的调用来按名称获取字符串形式的属性。另外,我真的看不出在这里使用setattr()
的原因。
getattr(cages[cageNumber], mouseID).sacrificed = True
尽管您经常做这种事情(即使您没有这样做),将m1
,m2
等放入列表中也不会那么麻烦或dict,以便更轻松地建立索引,因此您可以执行以下操作:
cages[cageNumber].mice[mouseID].sacrificed = True