我有一个包含多个类的Python模块,其中第一个类执行大量的数据导入,接下来的几个类基于第一个类的输出创建文件:
class ImportData:
def __init__(self):
self.result_csv = None
def import_file(self):
self.result_csv = pd.read_csv(file.csv)
return self.result_csv
class CreateDataObject1:
def __init__(self):
import_data = ImportData()
self.data_object_1 = import_data.result_csv
def create(self):
self.data_object_1 = self.data_object_1.loc[self.data_object_1["Zulu"]]
class CreateDataObject2:
def __init__(self):
import_data = ImportData()
self.data_object_2 = import_data.result_csv
def create(self):
self.data_object_2 = self.data_object_2.loc[self.data_object_2["Foxtrott"]]
如您所见,我希望将示例变量从第一个类传递到所有其他类,以便它们可以进一步使用它,但是,我不希望每次都调用第一个类中的import方法,因为它的计算开销很大。2我怎样才能保证后面所有的类只从第一个类中获取结果示例变量而不调用它的方法呢?这里是否推荐使用静态方法/类方法/类继承?谢谢!
2条答案
按热度按时间xzlaal3s1#
使用依赖注入。不要示例化
ImportData
并在每个类中调用它,而是将data_object
作为构造函数的参数提供。应用程序的主体负责按正确的顺序将所有对象组合在一起,并且可以确定是为每个依赖项使用新对象还是重用它们。
s1ag04yj2#
你的问题有很多解决办法我认为一个带有自定义方法的类要简单一些:
注意,你基本上只是在一个类中组合一个 Dataframe ,并添加一些(硬编码的)方法,也许你只是想要 Dataframe ,并在需要时调用
df.loc[df["Foxtrott"]]
?