组织Python类的最佳方法是什么?

时间:2019-12-10 19:23:34

标签: python class

我想知道用Python组织类的最佳方法是什么,因为在这里检查以前的问题时,我找不到我真正需要的东西。假设我有这个课程:

class A():
    def __init__(self):
        self.data = #A pandas dataframe I get from an online API

我想在这个类中组织许多函数。所有这些功能都需要将self.data中包含的数据框作为参数。

我曾想为每组函数创建一个子类,但是我没有找到从子类内部引用self.data的方法。

然后我在网上发现我可以将功能组织在不同的模块中。但是,如何将self.data中的Dataframe作为参数传递给函数?假设function1定义如下:

def function1(self):
    print (self.data)

如果函数是在类内部定义的,我可以这样做:

x = A()
x.function1()

并在不传递self.data作为参数的情况下获得打印结果。如果在另一个模块中定义了一个函数并将其导入主类而不每次都将self.data作为参数传递,该怎么办?预先感谢。

编辑: 如果我这样做:

class A():
    def __init__(self):
        self.x = 1
        self.b = self.B()

    class B(A):
        def print(self):
            print(self.x)

我收到一条错误消息,提示“未定义A” ​​

1 个答案:

答案 0 :(得分:1)

我喜欢您为每组方法创建子类的方法。首先从存储数据的基类开始

class DataBase:
    def __init__(self, data):
        self._data = data

然后编写您不同的方法组...

class GroupB(DataBase):
    def func_b1(self):
        return self._data

    def func_b2(self):
        return self._data

class GroupA(DataBase):
    def func_a1(self):
        return self._data

    def func_a2(self):
        return self._data

...最后将所有这些组收集在一起

class MyData(GroupA, GroupB):
    pass


>>> d = MyData(123)
>>> d.func_a1()
123
>>> d.func_b2()
123

希望对您有帮助。