我是 OOP Python 的新手,我有一个对象:class Object: def __init__(self, start_date, end_date, thing) self.start_date = start_date self.end_date = end_date self.thing = thing ( ... ) def get_things(self): return self.db.execute_fetchall(f"select date, p1, p2, p2, p4 from {self.thing} where date between '{self.start_date}' and '{self.end_date}'") ( ... ) 现在,如果我有:some_things = ["table_1", "table_2", "table_3"]Object.get_things()该方法只是选择一个给定的表,但我想尽可能高效。除了:for thing in things: Object(start_date=start_date, end_date=end_date, thing=thing)我是否应该在批量语句中使用这种逻辑并拥有一种get_all()方法?我选择的表(静态)总是相同的,我正在寻找从它们中选择数据的最快方法......
1 回答
温温酱
TA贡献1752条经验 获得超4个赞
您可能会考虑使用类变量,这样您就不必聚合您的事物集合。
class object:
things = []
def __init__(self, thing):
self.thing = thing
self.things.append(thing)
def get_things(self):
return(self.things)
a = object(1)
b = object(2)
c = object(3)
print(a.get_things()) # Prints [1, 2, 3]
这可能是最快的方式,因为您的事物列表将存储在内存中,并且检索聚合列表不需要任何计算。应该指出,这种方法有其自身的缺点。例如,如果您更改了某个 object.thing 的值,则您还需要在列表 object.things 中反映该更改,并且您会看到删除或覆盖对象实例等事情需要一些额外的工作。
添加回答
举报
0/150
提交
取消