在类对象之间共享数据
问题描述:
我主要进行与科学相关的编程,通常以非常连续的方式结束。当我需要复制类似的结构或通过函数传递许多参数时,我正试图提高自己的编码技能并使用OOP。到目前为止,我做得很好,但最近我发现了一个问题。在类对象之间共享数据
想象一下,通过对SQL数据库执行查询,可以获得大量信息。然后,我希望将这些值存储在内存中(以避免多个查询)并将它们与一个类的不同对象共享。
我想是这样的:每一个对象()创建调用数据,并执行查询时
Class Data:
def __init__(self, query):
self.df = read_sql(query)
Class Object(Data):
def __init__(self, params):
super().__init__()
# some processes with params
def methods():
# some methods which uses values from Class Data
不过。 有没有什么办法可以分享数据,而不会将它作为参数传递?
数据中可能是类对象吗?
答
你在做什么不是分享,而是继承。如果你想用的Object
几个实例重用的Data
相同的实例那么这可能是有意义的:
Class Data:
def __init__(self, query):
self.df = read_sql(query)
Class Object:
def __init__(self, data, params):
self.data = data
# some processes with params
def methods():
# some methods which uses values from Class Data
这是你将怎样使用这些类:
data = Data(query)
obj1 = Object(data, params1)
obj2 = Object(data, params2)
如果使用不同的查询?你是说你想缓存呼叫,还是在班级而不是实例上运行? –
如果您想保留每个实例在查询中传递的机会,您应该在类级别缓存查询结果和查询本身,然后在运行查询之前检查它是否在缓存中,否则为什么需要查询参数? –
@PadraicCunningham我有类似的数据结构需要不同的查询,因此参数。我如何缓存查询的结果? – JMFilipe