我有一个相当冗长的数据分析类。在这个类中,有输入,输出,绘图,不同分析步骤等功能。我真的想把这个类分成更小,更容易阅读的子类。
最简单的方法当然是定义一个超类,然后继承多个子类。但是,这不是我想要的,因为on on subclass的函数不能改变另一个子类的变量。
我想要的是将类定义拆分为多个文件,我可以将这些方法分组。
结构应该是这样的:
master.py # contains something that puts together all the parts
io.py # contains function for data input / output
plot.py # contains functions for plotting / visualization of data
analyze1.py # contains functions to perform certain analysis steps
analyze2.py # contains functions to perform certain analysis steps
答案 0 :(得分:2)
看看mixins:
<强> plot.py 强>:
class DataPlotter(object):
def plot(self):
# lots of code
my_plot_lib.plot(self.data) # assume self.data is available in instance
<强> io.py:强>
class DataIOProvider(object):
def read(self, filename):
# lots of code
self.data = magic_data
<强> master.py:强>
from plot import DataPlotter
from io import DataIOProvider
class GodDataProcessor(DataPlotter, DataIOProvider):
def run(self):
self.read('my_file.txt')
self.plot()
请注意,您应该将代码包装在某个包中以避免名称冲突(io
是Python中的内置模块名称。)
所有基类都可以驻留在单个模块中,当在一个基类中设置属性时,只需假设它在所有其他类中都可用。