我是 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
提交
取消