私有和公共包模块?

时间:2015-09-29 18:09:14

标签: python module packages conventions

在Python中,我们通常通过在名称的开头添加_前缀私有属性来区分类,对象和模块的私有属性和公共属性。因此,供私人使用的模块级功能将命名为_func

是否存在包级别元素的约定,即模块?例如,假设我有几个模块是公共API的一部分(除了它们的私有_前缀组件)和几个完全供私人使用的模块。我应该使用_为私人提供前缀吗?我应该将它们放在“private”子包中吗?

这是否有约定?

1 个答案:

答案 0 :(得分:1)

PEP8当然是Python编码风格的公认惯例,但它并没有深入讨论包命名:

来自Package and Module Names

  

模块应该有简短的全小写名称。如果提高可读性,则可以在模块名称中使用下划线。 Python包也应该有简短的全小写名称,但不鼓励使用下划线。

简而言之,没有真正公认的标准可以让用户知道不应该使用特定的子包。相反,您应该清楚地记录您的代码以指示私有和公共包。您对使用private包的建议很适合。 internal可能是另一种选择。

Public and Internal Interfaces对此有更深入的了解:

  

记录的接口被视为公共接口,除非文档明确声明它们是临时的或内部接口免于通常的向后兼容性保证。应假定所有未记录的接口都是内部接口。

  

如果任何包含名称空间(包,模块或类)的内容被视为内部接口,则该接口也被视为内部接口。