我正在编写一个函数来查找对象的特定属性,并将该属性设置为另一个值。是否有一种方法可以使用函数来指定要影响的属性?
我试图修改mouseNumber指定的属性,其中cage[cageNumber]返回一个类对象。例如:我正在寻找鼠3在笼101号,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)。每个笼子里可能只有一个,但如果有开口,它们可能会在一个笼子里来回移动。我的目标是通过移动老鼠来减少笼子的数量。
编辑:笼子包含在字典中。
发布于 2018-12-27 19:22:28
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"))
https://stackoverflow.com/questions/53949806
复制相似问题