拆分 class 定义,完全控制 subclass

Split class definition with full control over subclass

我有一个相当冗长的 class 用于数据分析。在这个 class 中有输入、输出、绘图、不同分析步骤等功能。我真的很想将此 class 拆分为更小、更易于阅读的子 classes.

最简单的方法当然是定义一个superclass然后继承多个subclass。然而,这不是我想要的,因为 on subclass 的函数不能改变另一个 subclass.

的变量

我想要的是将 class 定义拆分为多个文件,我可以在其中对某些方法进行分组。

结构应该是这样的:

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

看看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 中的内置模块名称)。

所有基础 类 可能驻留在单独的模块中,并且当在基础 类 之一中设置属性时,只需假设它在所有其他 类.[=14= 中可用]