在类对象之间共享数据

在类对象之间共享数据

问题描述:

我主要进行与科学相关的编程,通常以非常连续的方式结束。当我需要复制类似的结构或通过函数传递许多参数时,我正试图提高自己的编码技能并使用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 

不过。 有没有什么办法可以分享数据,而不会将它作为参数传递?

数据中可能是类对象吗?

+1

如果使用不同的查询?你是说你想缓存呼叫,还是在班级而不是实例上运行? –

+1

如果您想保留每个实例在查询中传递的机会,您应该在类级别缓存查询结果和查询本身,然后在运行查询之前检查它是否在缓存中,否则为什么需要查询参数? –

+0

@PadraicCunningham我有类似的数据结构需要不同的查询,因此参数。我如何缓存查询的结果? – JMFilipe

你在做什么不是分享,而是继承。如果你想用的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)