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