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