python - 有没有办法改变一个对象的属性分配给另一个对象的属性?
问题描述
我想更改已分配为另一个对象的属性的对象的属性。
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) 中的每一只。
解决方案
如果我了解您要查找的内容,则需要使用调用来getattr()
按名称获取属性作为字符串。另外,我真的没有理由在setattr()
这里使用。
getattr(cages[cageNumber], mouseID).sacrificed = True
虽然如果你经常做这种事情(即使你不是),将 , 等放入列表或 dict 以便于索引可能会不那么麻烦m1
,m2
所以你可以改为做类似的事情:
cages[cageNumber].mice[mouseID].sacrificed = True
推荐阅读
- flutter - 参数类型'Future
' 不能分配给参数类型 'Future 功能()?' - html - 如何更改 ngx-daterangepicker-material 中的默认值?
- gitlab - 如何在 .gitlab-ci.yml 中清除 gitlab 中的工作区?
- c# - 我的 DynamoDB 查询引发错误 500 无法建立连接
- javascript - 防止页面加载中的焦点/模糊事件
- python - 使用 Pandas ExcelWriter 创建的 xlsx 文件需要修复
- java - AWS EMR 如何知道所有并行步骤是否已完成
- ios - 错误:选择器“setScreenName:screenClass:”没有已知的类方法
- javascript - 滚动 Bootstrap 时更改导航栏背景
- mysql - 如何使用 bash/shell 脚本将 MySQL 查询结果输出到 Excel 中的新工作表中