我正在编写一个函数来查找对象的特定属性,并将该属性设置为另一个值。有没有办法使用函数来指定要影响的属性?
我正在尝试修改mouseNumber
指定的属性,其中cage[cageNumber]
返回一个类对象。例如:我正在寻找笼101中的鼠标3 cage[101].m3
。每只鼠标的编号前都有一个“ m”,这就是问题的出处。我想将cage[101].m3 = True
更改为cage[101].m3 = False
。我会这样调用函数:
sacrifice(101, 3)
。
我尝试过:
def sacrifice(cageNumber, mouseNumber):
cage[cageNumber].exec(f'm{mouseNumber}') = False
给予SyntaxError: can't assign to function call
和
def sacrifice(cageNumber, mouseNumber):
mouseNumber = exec(f'm{mouseNumber}')
cage[cageNumber].mouseNumber = False
给予NameError: name 'm3' is not defined
背景:我正在编写一小段代码,以跟踪并巩固笼中的小鼠。每个笼是类实例,每个鼠标是每个笼的属性。每个笼子容纳5只小鼠(m1,m2,m3,m3,m5)。每个笼子中每个数字可能只有1个,但是如果有开口,它们可能会在笼子之间移动。我的目标是通过在老鼠周围移动来减少笼子的数量。
编辑:笼子包含在字典中
答案 0 :(得分:1)
def sacrifice(cageNumber, mouseNumber):
setattr(cage[cageNumber],"m{}".format(str(mouseNumber)), False)
setattr
允许您基于字符串名称访问对象。因此,例如,my_object.my_attritue = 3
也可以写成setattr(my_object, "my_attribute", 3)
您可以类似的方式使用getattr
来获取值。即print(my_object.my_attribute)
可以写为print(getattr(my_object, "my_attribute"))