我有一个模块,其目的是定义一个名为"nib"的类.(以及一些相关的类.)我应该如何调用模块本身?"笔尖"?"nibmodule"?还要别的吗?
只是笔尖.使用大写N命名类Nib.有关命名约定和其他样式建议的更多信息,请参阅PEP 8,Python样式指南.
我称之为nib.py. 而且我也会把Nib命名为.
在我正在研究的一个更大的python项目中,我们有很多模块基本上定义了一个重要的类.类以大写字母开头.这些模块的命名方式类似于小写的类.这导致进口如下:
from nib import Nib from foo import Foo from spam.eggs import Eggs, FriedEggs
这有点像模仿Java方式.每个文件一个类.但是,通过增加灵活性,如果有意义的话,你可以将另一个类添加到单个文件中.
我知道我的解决方案从pythonic的角度来看并不是很受欢迎,但我更喜欢使用一个模块的Java方法 - >一个类,模块命名为类.我确实理解python风格背后的原因,但我不太喜欢有一个包含很多类的非常大的文件.尽管折叠,我发现很难浏览.
另一个原因是版本控制:拥有一个大文件意味着你的提交倾向于专注于该文件.这可能会导致需要解决更多的冲突.您还会丢失提交修改特定文件的其他日志信息(因此涉及特定的类).相反,您会看到对模块文件的修改,只有提交注释才能理解已完成的修改.
总结一下,如果您更喜欢python哲学,请查看其他帖子的建议.如果您更喜欢类似java的哲学,请创建一个包含Nib类的Nib.py.
笔尖很好.如有疑问,请参阅Python样式指南.
从PEP 8:
包和模块名称模块应具有简短的全小写名称.如果提高可读性,则可以在模块名称中使用下划线.Python包也应该有简短的全小写名称,但不鼓励使用下划线.
由于模块名称映射到文件名,并且某些文件系统不区分大小写并截断长名称,因此选择模块名称相当短很重要 - 这在Unix上不是问题,但它可能是将代码传输到较旧的Mac或Windows版本或DOS时出现问题.
当用C或C++编写的扩展模块具有提供更高级别(例如更多面向对象)的接口的Python模块时,C/C++模块具有前导下划线(例如_socket).