将类用作共享数据的函数集合的最佳实践

时间:2019-05-24 08:04:49

标签: python class

我有一个代码,获取一些脏数据作为输入,然后对其进行解析,清理,整理它们,等等,然后返回一个值。

此刻,我将其构造为一个类,其中__init__方法接收输入并按给定顺序调用其他方法。 此刻我的课看起来像这样:

class myProcedure:
    def __init__(self, dirty_data, file_name):

        self.variable1, self.variable2 = self.clean_data(dirty_data)
        self.variable3                 = self.get_data_from_file(file_name)

        self.do_something()

    def clean_data(self, dirty_data):
        #clean the data
        return variable1, variable2

    def get_data_from_file(self, file_name):
        #load some data
        return loaded_data

    def do_something(self):
        #the interesting part goes here
        self.result = the_result

使用类而不是稀疏函数可以更轻松地共享数据。在我的真实代码中,我只有几十个变量可以共享。另一种选择是将它们全部放在字典中,或者让每个函数接受10-20个输入。我发现这两种解决方案都麻烦

此刻我必须将其称为:

useless_class_obj = myProcedure(dirty_data, file_name)
interesting_stuff = useless_class_obj.result

我的担心来自这样一个事实,即useless_class_obj一经运行就不再具有任何用途,而只是一堆无用的垃圾。

我认为将类用作以下内容会更优雅:

interesting_stuff = myProcedure(dirty_data, file_name)

但这需要__init__返回不同于self的内容。

有更好的方法吗? 我是用一种不好的或难以理解的方式来做这件事吗?

1 个答案:

答案 0 :(得分:1)

嗯...您也可以...

interesting_stuff = myProcedure(dirty_data, file_name).result