有没有办法将一个对象的属性更改为另一个对象的属性?

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


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)中的每只。


蓝山帝景
浏览 298回答 1
1回答

哆啦的时光机

如果我了解您要查找的内容,您需要调用 以getattr()按名称将属性作为字符串获取。另外,我真的没有看到setattr()在这里使用的理由。getattr(cages[cageNumber], mouseID).sacrificed = True但如果你正在做这样的事情很多(即使你不是),它很可能是把繁琐的少m1,m2等进入列表或字典,方便索引,这样你就可以代替这样做:cages[cageNumber].mice[mouseID].sacrificed = True
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python