如何组织具有大量常量和异常的 Python 模块?

Mik*_*hin 5 python exception constants organization

我正在编写一个 Python 模块,它只有大约 20 个有趣的类型和全局方法,但有大量常量和异常(大约 70 个用于语言环境的常量、60 个用于编码的常量、20 个格式化属性、超过 200 个异常,等等)。结果help(),该模块生成了大约 16,000 行文本,并且散布着对每个异常几乎相同的描述。这些常数的要求并不高,但导航它们仍然很困难。

组织这样一个模块的Pythonic方式是什么?就保留原样并依赖其他文档吗?将常量移动到单独的字典中?进入子模块?在适当的情况下将它们添加为类级常量?

请注意,这是一个 C 扩展,因此我无法在此处轻松添加真正的子模块。我听说这并sys.modules没有真正检查对象是否有模块,因此可以在那里添加字典;这样我就可以创建mymodule.localesmymodule.encoding和 ,并在导入模块时mymodule.exceptions将它们添加到其中。sys.modules这是个好主意还是太黑客了?

tre*_*kby 1

实际上有两种选择可以解决您的问题。第一种方法是对所有常量和异常进行分类,并拥有较少数量的更广泛的类别。这将使您可以轻松导航到您想要的类别。字典(或者可能是嵌套字典)将是实现此目的的好方法,因为您可以维护其中包含标题的组。如果您想更多地自定义管理,则可以执行此操作的第二种方法是创建一个有点像字典的类。它将有一个子对象列表。通过这种方式,您可以创建独特的、更易于访问的方法来浏览所有常量和异常,例如处理多个类似异常的新异常类。另一种使其更清晰的方法(需要访问源代码)是将所有这些异常分成一个较小的异常组,每个异常组可以处理相似的问题组。这可能是处理异常的更好方法,但您可能无法访问源代码来修改它。