在 Python 中迭代新对象实例

我是 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()方法?我选择的表(静态)总是相同的,我正在寻找从它们中选择数据的最快方法......


梦里花落0921
浏览 61回答 1
1回答

温温酱

您可能会考虑使用类变量,这样您就不必聚合您的事物集合。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 中反映该更改,并且您会看到删除或覆盖对象实例等事情需要一些额外的工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python