Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中迭代新对象实例_Python_Python 3.x_Class_Object - Fatal编程技术网

在Python中迭代新对象实例

在Python中迭代新对象实例,python,python-3.x,class,object,Python,Python 3.x,Class,Object,我是OOP Python新手我有一个对象: 类对象: 定义初始日期(自我、开始日期、结束日期、事物) self.start\u date=开始日期 self.end\u日期=end\u日期 自我事物 ( ... ) def获取内容(自我): 返回self.db.execute_fetchall(f“从{self.thing}中选择日期,p1,p2,p2,p4,其中日期介于{self.start_date}和{self.end_date}”之间) ( ... ) 现在如果我有: some_t

我是OOP Python新手我有一个对象:

类对象:
定义初始日期(自我、开始日期、结束日期、事物)
self.start\u date=开始日期
self.end\u日期=end\u日期
自我事物
( ... ) 
def获取内容(自我):
返回self.db.execute_fetchall(f“从{self.thing}中选择日期,p1,p2,p2,p4,其中日期介于{self.start_date}和{self.end_date}”之间)
( ... ) 
现在如果我有:

some_things = ["table_1", "table_2", "table_3"]
该方法只是选择一个给定的表,但我希望尽可能地提高效率。是否有其他方法轮询数据库中所有3个表名,除了:

for thing in things: 
    Object(start_date=start_date, end_date=end_date, thing=thing)

我是否应该在批量语句中使用这种逻辑,并使用
get\u all()
方法?
我选择的表(静态)总是相同的,我正在寻找从中选择数据的最快方法

> P>你可以考虑使用一个类变量,这样你就不必聚合你的东西集合了。p>
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的值,则需要在列表对象中反映该更改。同样,您会看到删除或重写对象实例等操作需要进行一些额外的工作。

我想您正在查找
从表A中选择t1.A、t2.B作为t1,从表B中选择t1.A、t2.B作为t2
(我不完全确定这些天我没有写太多原始sql)那么,您是否建议将其放在原始sql命令中,而不是放在sql语句中,而不是python代码中。在python方面,您感兴趣的是如何表示数据层。如果表总是相同的,但日期可以更改,那么表应该在类中硬编码。为什么要在ler甚至需要知道它们是什么?当这些在下一次大型数据库重组中发生变化时,您不必追踪该类的所有调用者。@Alex您已经在那里执行原始sql…在execute fetchall上…您只需要调整该查询…@Alex,对于这种简单的情况,单个函数是一个很好的解决方案。该类使事情变得更加简单如果你引用
对象,你的代码可能会更干净。things
a.things
相反。它实际上是一样的,只是可读性问题。是的,我同意,当你实例化对象时,我对于事物中的事物:对象(事物)你仍然会做
,对吗?是的,我想…如果没有更多的上下文,就很难说。我认为这种方法可能会有问题,因为对象列表没有得到适当的维护。例如,如果你在显示的
print()
之后执行
delb
,那么就执行
print(a.get_things())
同样,它仍将显示所有三个对象,即使
b
不应再存在。
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]