在不使用下面示例代码中的四个'if statements'
的情况下引用数据存储区模型属性的最佳方法是什么,这看起来很麻烦且效率低下。对于真实世界的代码,我可能有100个属性的情况,例如self.var1, self.var2, ... self.varN
,我想要一些仅使用整数(或字符串)作为某个方法的参数。
class PixelObject(db.Model):
zoom0 = db.ListProperty(int)
zoom1 = db.ListProperty(int)
zoom2 = db.ListProperty(int)
zoom3 = db.ListProperty(int)
zoom4 = db.ListProperty(int)
def inputZoomData(self, zoomInteger, input_data):
"""input_data goes to specified attribute based on if 0,1,2,3,or 4 is argument"""
if zoomInteger == 0: self.zoom0 = input_data
if zoomInteger == 1: self.zoom1 = input_data
if zoomInteger == 2: self.zoom2 = input_data
if zoomInteger == 3: self.zoom3 = input_data
if zoomInteger == 4: self.zoom4 = input_data
答案 0 :(得分:2)
如何使用整数数组,而不是保存五个不同的整数属性?
答案 1 :(得分:2)
我还建议使用数组而不是五个成员来简化代码:
if 0 <= zoomInteger < len(zooms):
self.zooms[zoomInteger] = input_data
else:
# Error handling.
如果你无法改变课程的设计方式,另一种方法是使用setattr
:
setattr(self, 'zoom' + str(zoomInteger), input_data)