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