很抱歉,这是一个绝对如此愚蠢的问题,但是我很好奇目前存在的最佳做法,而且我似乎在Google上找不到很好的答案。
在Python中,我通常使用一个空类作为超级类数据结构容器(有点像JSON文件),并在此过程中添加属性:
class DataObj:
"Catch-all data object"
def __init__(self):
pass
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
这给了我极大的灵活性,因为容器对象实际上可以存储任何东西。因此,如果出现了新的需求,我将其添加为DataObj对象的另一个属性(我在代码中传递了该属性)。
但是,最近(FP程序员)给我留下了深刻的印象,那就是这是一种糟糕的做法,因为这使得很难阅读代码。必须仔细阅读所有代码,以找出DataObj实际具有的属性。
问题:如何在不牺牲灵活性的情况下重写此代码,以实现更大的可维护性?
我可以采纳函数式编程中的任何想法吗?
我正在寻找最佳实践。
注意:一种想法是使用一个期望遇到的所有属性来预先初始化该类,例如
class DataObj:
"Catch-all data object"
def __init__(self):
data.a = 0
data.b = ""
data.c = []
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
这实际上是一个好主意吗?如果我不知道我的先验属性怎么办?