问题:模块的Python命名约定
我有一个模块,其目的是定义一个称为“ nib”的类。(以及一些相关的类。)我应该如何调用模块本身?“笔尖”?“ nibmodule”?还要别的吗?
回答 0
只是笔尖。将类Nib命名为大写N。有关命名约定和其他样式建议的更多信息,请参见Python样式指南PEP 8。
回答 1
我称它为nib.py。我也将其命名为Nib类。
在我正在处理的一个较大的python项目中,我们有许多模块定义了一个重要的类。类以大写字母开头。模块的名称类似于小写的类。这导致如下所示的导入:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
有点像模拟Java方式。每个文件一个类。但是,通过增加的灵活性,您可以在合理的情况下始终将另一个类添加到单个文件中。
回答 2
我知道我的解决方案从pythonic的角度来看不是很流行,但是我更喜欢使用Java的方法,即一个模块->一个类,并将模块命名为该类。我确实了解python样式背后的原因,但是我不太喜欢包含很多类的非常大的文件。尽管折叠,但我发现很难浏览。
另一个原因是版本控制:拥有大文件意味着您的提交倾向于集中在该文件上。这有可能导致解决大量冲突。您还将丢失提交修改特定文件(因此涉及特定类)的其他日志信息。取而代之的是,您看到了对模块文件的修改,仅带有提交注释以了解已进行了哪些修改。
总结一下,如果您喜欢python原理,请参考其他文章的建议。如果您更喜欢类似Java的哲学,请创建一个包含Nib类的Nib.py。
回答 3
笔尖很好。如有疑问,请参阅Python样式指南。
从PEP 8:
程序包和模块名称模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。
由于模块名称已映射到文件名,并且某些文件系统不区分大小写,并且截断了长名称,因此,将模块名称选择为相当短是很重要的-在Unix上这不是问题,但可能是代码传输到较旧的Mac或Windows版本或DOS时出现问题。
当用C或C ++编写的扩展模块具有随附的Python模块提供更高级别(例如,面向对象)的接口时,C / C ++模块具有下划线(例如_socket)。
回答 4
模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。
尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。
当用C或C ++编写的扩展模块具有随附的Python模块提供更高级别(例如,面向对象)的接口时,C / C ++模块具有下划线(例如_socket)。
回答 5
python中的foo模块等效于Java中的Foo类文件
要么
python中的foobar模块等同于Java中的FooBar类文件