在类对象之间共享数据

时间:2016-03-06 17:35:45

标签: python oop

我主要进行科学相关的编程,这通常是非常顺序的。当我需要复制类似的结构或通过函数传递许多参数时,我试图提高我的编码技能并使用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并执行查询。 有没有办法分享数据而不将其作为参数传递?

可能是数据中的类对象?

1 个答案:

答案 0 :(得分:0)

您正在做的不是共享而是继承。如果您想要将Data的同一个实例重用于Object的多个实例,那么这可能有意义:

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)