我有一个类,我正试图用一个循环调整的给定变量为它创建对象。我正在努力解释,所以也许举个例子会有所帮助。实际的课程比下面的要复杂,但总体思路是一样的。下面的方法行得通,但感觉非常错误。你知道吗
#!/usr/bin/python
class Cuboid:
# default values for new instances
width = 123
height = 456
depth = 789
def __init__(self, var, val):
exec("self." + var + " = val") # This feels un-pythony
def area(self):
return self.width*self.height*self.depth
param_list=[
['width',[5,10,15,20]],
['height',[5,10,15,20]]
]
for param_i in range(0,len(param_list)):
for val_i in range(0,len(param_list[param_i][1])):
thisCuboid = Cuboid(param_list[param_i][0],param_list[param_i][1][val_i])
print(str(thisCuboid.area()))
这将产生预期的输出:
1798920
3597840
5396760
7195680
485235
970470
1455705
1940940
抱歉,如果这个问题措辞不当,我对python还很陌生。请随时建议更好的措辞/要求澄清!你知道吗
请注意,需要更改的参数的实际数量要多得多(类似于20维长方体以扩展类比,“面积”取决于所有20个值),因此简单的方法(为每个参数创建一个列表并依次循环列表,相应地设置命名参数)很快就会变得混乱(我需要添加我要更改的每个参数的循环)
感谢Christian Dean,下面的效果更好!你知道吗
相关问题 更多 >
编程相关推荐