我有一个包含很少模块(大约 4 个左右)的小型 Python 程序。主模块创建一个元组列表,从而表示许多记录。这些元组可通过一个简单的函数返回给其他模块(比如,get_records()
)。
但是,我不确定这是否是好的设计。问题是其他模块需要知道元组中每个元素的索引。这增加了模块之间的耦合,并且对于想要使用主模块的人来说不是很透明。
我可以想到几个替代方案:
使元组元素的索引值可用作模块常量(例如
IDX_RECORD_TITLE
,、IDX_RECORD_STARTDATE
等)。这避免了像title = record[3]
.不要使用元组,而是创建一个记录类,并返回这些类对象的列表。优点是类方法将具有不言自明的名称,例如
record.get_title()
.不要使用元组,而是使用字典。因此,在这种情况下,该函数将返回一个字典列表。优点是字典键也是不言自明的(尽管使用该模块的人需要知道它们)。但这似乎是一个巨大的开销。
我发现元组是 Python 的一大优势(很容易传递复合数据而没有类/对象的编码开销),所以我目前使用 (1),但仍然想知道什么是最好的方法。