如何组织包含大量常量和异常的Python模块?

时间:2013-05-10 11:14:24

标签: python exception constants organization

我正在编写一个Python模块,它只有大约20个有趣的类型和全局方法,但是有很多常量和异常(大约有70个常量用于语言环境,60个用于编码的常量,20个格式化属性,超过200个异常等等)上)。因此,此模块上的help()生成大约16,000行文本,并且对每个异常的描述几乎相同。常数并不是那么苛刻,但仍然难以导航它们。

组织这样一个模块的pythonic方法是什么?只是保持原样并依赖其他文档?将常量移动到单独的词组中?进入子模块?在适当的地方将它们添加为类级别常量?

请注意,这是一个C扩展,所以我不能在这里轻松添加一个真正的子模块。我听说sys.modules没有真正检查对象是否有模块,所以可以在那里添加词典;通过这种方式,我可以创建mymodule.localesmymodule.encodingmymodule.exceptions,并在导入模块时将其添加到sys.modules。这是一个好主意还是过于讨厌?

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决您的问题。第一种方法是对所有常量和异常进行分类,并使用较少数量的更广泛的类别。这样您就可以轻松导航到您想要的类别。字典(或可能是嵌套的字典)是实现此目的的好方法,因为您可以维护带有标题的组。第二种方法是,如果你想更多地自定义管理,你可以做一个类似于字典的类。它将有一个子对象列表。这样,您可以创建唯一的,更易于访问的方法来浏览所有常量和异常,例如处理几个类似异常的新异常类。另一种使其更清洁的方法是将所有这些异常分成一小组异常,这些异常可以处理类似问题的组。这可能是处理异常的更好方法,但您可能无法访问源代码来修改此异常。