替代嵌套 类?

Alternative to nested classes?

我正在使用嵌套 classes 来构建我的数据和数据特定函数(抱歉,无法在代码片段中正确缩进):

class test:
    class AA:
        def __init__(self):
            self.name = "ZZ-top"
            self.flag = False
        def reset(self):
            self.name = "AArdvark"
            self.flag = True
    class BB:
        def __init__(self):
            self.num = 11
        def checker(self):
            if self.num > 10:
                test.AA.name = "Toasty"                     
    def __init__(self):
        self.AA = self.AA()
        self.BB = self.BB()

对我来说,这是按 class 分隔数据的最巧妙、最简单的方法。我经常有来自不同来源的相同数据,并希望将其表示出来。例如。 data.image.latitude 和 data.csv.latitude。我还希望有从多个 classes 获取或设置数据的函数。例如:检查功能。

问题是 python 似乎不喜欢嵌套的 classes。我 运行 遇到了 pickle 的麻烦(不能 pickle class 'test.BB.num'。这似乎是一个常见的 pickle/nested class 问题)和一些功能想要有关邻近 classes 的信息不起作用。我想我必须放弃嵌套的 classes.

python构造此数据的正确方式是什么?我应该只拥有一个非常大的 class (self.AA_timeofday ... self.ZZ_timeofday) 并包含所有功能还是有更好的东西?

很少需要嵌套 classes,除了将 class 的名称包装在另一个命名空间中并打破 pickling 之外,在功能上没有区别。

只需将 classes 放在模块的全局级别:

class AA:
    def __init__(self):
        self.name = "ZZ-top"
        self.flag = False
    def reset(self):
        self.name = "AArdvark"
        self.flag = True

class BB:
    def __init__(self):
        self.num = 11
    def checker(self):
        if self.num > 10:
            test.AA.name = "Toasty"   

class test:                  
    def __init__(self):
        self.AA = AA()
        self.BB = BB()