Python命名模块的约定

我有一个模块,其目的是定义一个名为“笔尖”的类。 (还有一些相关的类。)我应该怎样调用模块? “笔尖”? “nibmodule”? 还要别的吗?

只是笔尖。 将类名称命名为Nib,大写为N.有关命名约定和其他样式build议的更多信息,请参阅Python风格指南PEP 8 。

我会把它叫做nib.py. 而且我也会命名class级的笔尖。

在我正在开发的一个更大的python项目中,我们有很多模块基本上定义了一个重要的类。 类以大写字母开头。 这些模块被命名为小写的类。 这导致如下的import:

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

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

我知道我的解决scheme不是从pythonic的angular度来看非常stream行,但我更喜欢使用一个模块的Java方法 – >一个类,模块命名为类。 我明白Python风格背后的原因,但我不太喜欢有一个包含很多类的非常大的文件。 尽pipe折叠,我发现很难浏览。

另一个原因是版本控制:有一个大文件意味着你的提交往往集中在该文件。 这可能会导致更多的冲突得到解决。 你也放松了你提交修改特定文件的额外的日志信息(因此涉及特定的类)。 相反,您会看到对模块文件的修改,只有提交注释才能理解已完成的修改。

总结一下,如果你更喜欢Python的哲学,那么去其他职位的build议。 如果您更喜欢类似于java的哲学,请创build一个包含类Nib的Nib.py。

笔尖很好。 如果有疑问,请参阅Python风格指南。

从PEP 8 :

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

由于模块名称映射到文件名,某些文件系统不区分大小写并截断长名称,所以重要的是select模块名称的时间相当短 – 在Unix上这不是问题,但它可能是代码被传输到较旧的Mac或Windows版本或DOS时出现问题。

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

python中的foo模块与Java中的Foo类文件相当

要么

python中的foob​​ar模块相当于Java中的FooBar类文件