模块的 Python 命名约定

我有一个模块,其目的是定义一个名为“ nib”的类。(还有一些相关的课程。)我应该如何调用模块本身?“笔尖”?“ Nibmodule”?还有别的事吗?

130697 次浏览

只是轻轻一点。命名类 Nib,大写 N。有关命名约定和其他样式建议的更多信息,请参阅 Python 样式指南 PEP 8

我把它命名为 Nib.py,我还把它命名为 Nib 类。

在我正在开发的一个更大的 Python 项目中,我们有很多定义基本上一个重要类的模块。类的名称以大写字母开头。这些模块的命名类似于小写的类。这导致了下列进口:

from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs

这有点像模仿 Java 的方式。每个文件一个类。但是,随着增加的灵活性,您总是可以添加另一个类到一个单一的文件,如果它是有意义的。

Nib 很好。如果有疑问,请参考 Python 样式指南。

来自 PEP 8:

包和模块名称 模块应该有简短的全小写名称。可以使用下划线 如果它提高了可读性,则在模块名称中添加 也有简短的全小写名称,尽管下划线的使用是 气馁。

因为模块名称映射到文件名,而一些文件系统是 大小写不敏感和截断长名称,这是重要的模块 名字要选得相当短——这在 Unix 上不成问题, 但是当代码被传输到旧的 Mac 或者 Windows 版本,即 DOS。

当用 C 或 C + + 编写的扩展模块具有相应的 Python 时 提供更高级别的模块(例如,更面向对象的模块) 接口,C/C + + 模块有一个前导下划线(例如 _ socket)。

我知道我的解决方案从 Python 的角度来看不是很流行,但是我更喜欢使用一个模块的 Java 方法—— > 一个类,并将模块命名为类。 我确实理解 Python 风格背后的原因,但是我不太喜欢拥有一个包含大量类的非常大的文件。我发现很难浏览,尽管折叠。

另一个原因是版本控制: 拥有一个大文件意味着您的提交倾向于集中于该文件。这可能导致需要解决的冲突数量增加。您还会丢失提交修改特定文件(因此涉及特定类)的附加日志信息。相反,您会看到对模块文件的修改,只有提交注释才能理解已经进行了哪些修改。

总而言之,如果你更喜欢 python 的理念,那么可以参考其他文章的建议。如果您更喜欢类 Java 的原理,那么创建一个包含类 Nib 的 Nib.py。

来自 PEP-8: 包和模块名称:

模块 应该有全小写的简短名称 如果它提高了可读性,则在模块名中使用。

Python 包 也应该有简短的全小写名称,尽管使用 不鼓励使用下划线。

如果用 C 或 C + + 编写的扩展模块有一个伴随的 提供更高级别的 Python 模块(例如,更面向对象) 接口,C/C + + 模块有一个前导下划线(例如 _ socket)。