我想知道用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”
答案 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
希望对您有帮助。