为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中迭代新对象实例

在 Python 中迭代新对象实例

梦里花落0921 2022-07-26 10:14:25
我是 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 中反映该更改,并且您会看到删除或覆盖对象实例等事情需要一些额外的工作。


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信