我有一个模块,其目的是定义一个名为"nib"的类(以及一些相关的类)。我应该如何称呼这个模块本身?"nib"? "nibmodule"? 还是其他什么?
我建议将这个模块本身命名为"nibmodule",以便更清晰地表明它与类"nib"的关系。我有一个模块,其目的是定义一个名为"nib"的类(以及一些相关的类)。我应该如何称呼这个模块本身?"nib"? "nibmodule"? 还是其他什么?
我建议将这个模块本身命名为"nibmodule",以便更清晰地表明它与类"nib"的关系。我会称之为nib.py。并且我也会把类的名称命名为Nib。
在我正在开发的一个较大的Python项目中,我们有很多模块定义了基本上同一个重要类。类名以大写字母开头。模块的名称则以小写字母命名与类名相同。这导致像以下这样的导入:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
这有点像模拟Java的方式。每个文件对应一个类。但是增加了灵活性,如果有必要,您可以随时将另一个类添加到单个文件中。
我知道从Python的角度来看,我的解决方案并不是很受欢迎,但我更喜欢使用Java的方法:一个模块对应一个类,模块名与类名相同。 我理解Python风格背后的原因,但我不太喜欢一个包含许多类的大文件,尽管可以折叠,但还是觉得难以浏览。
另外一个原因是版本控制:一个大文件意味着您的提交往往集中在那个文件上。这可能导致更多的冲突需要解决。您也会失去附加日志信息,即您的提交修改了特定的文件(因此涉及特定的类)。相反,您只会看到对模块文件的修改,而仅凭提交注释就要理解修改内容。
总之,如果您喜欢Python哲学,请遵循其他帖子的建议。如果您更喜欢Java风格,请创建一个名为Nib.py的文件,其中包含类Nib。
spyder
或类似的编辑器查看类的摘要以帮助导航,并使用两个窗格打开相同的文件。另外,请阅读PEP8。Python用于编写Python代码,Java用于编写Java代码,但Python不适用于编写Java代码。 - 0 _nib 很好。如果不确定,请参考 Python 风格指南。
来自 PEP 8:
包和模块名 模块应该使用短小的全小写字母命名。如果使用下划线可以提高可读性则可以使用。Python 包也应该使用短小的全小写字母命名,虽然不建议使用下划线。
由于模块名映射到文件名,一些文件系统不区分大小写并截断长文件名,因此选择相当短的模块名非常重要 - 在 Unix 上这不是问题,但在代码传输到旧的 Mac 或 Windows 版本或 DOS 时可能会有问题。
当用 C 或 C++ 编写一个扩展模块,并且该模块具有提供更高级别(例如更面向对象)接口的 Python 模块时,C/C++ 模块具有前导下划线(例如 _socket)。
来自PEP-8:包和模块名称:
模块的名称应该短小、全小写。如果使用下划线可以提高可读性。
Python包的名称也应该短小、全小写,虽然不鼓励使用下划线。
当一个用C或C++编写的扩展模块带有一个提供更高级别(例如更面向对象)接口的Python模块时,C/C++模块前加下划线(例如_socket)。
Client
的类,通常我会创建一些实例并将它们命名为client
。但按照你所说的规范,模块名应该是client
,因此我总是不得不给我的实例起一些不自然的名字,比如client_instance
。你对这个问题有什么看法? - Rayclient
,Client
或CLIENT
),因此实例、类、模块或常量之间总会存在两者之间的冲突。我认为你给模块起与实例或常量相同的名称的情况较少,而给类取相同名称的情况更多,因此这是其他可能性中更好的命名约定。这也将使从模块导入更易读,因为通常导入的是类和常量,而不是变量。 - Ted Klein Bergman