替代嵌套 类?
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()
我正在使用嵌套 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()