我有一个模块,其目的是定义一个称为“ nib”的类。(以及一些相关的类。)我应该如何调用模块本身?“笔尖”?“ nibmodule”?还要别的吗?
我有一个模块,其目的是定义一个称为“ nib”的类。(以及一些相关的类。)我应该如何调用模块本身?“笔尖”?“ nibmodule”?还要别的吗?
Answers:
只是笔尖。将类Nib命名为大写N。有关命名约定和其他样式建议的更多信息,请参见Python样式指南PEP 8。
Client
,并且可以理解的是,我经常会创建我想调用的实例client
。但是根据您的约定,模块名称为client
,因此我总是必须用不自然的名称来命名实例client_instance
。您如何看待这个问题?
Client
,然后它将与类名冲突Client
。由于仅存在3个可能的命名变体(client
,Client
或CLIENT
)总会有两个实例,类,模块或常数之间的冲突。我相信与类相比,将模块命名为实例或常量的次数更少,因此是其他可能性更好的命名约定。由于通常导入类和常量而不是变量,因此这也使从模块的导入更易读。
我知道我的解决方案从pythonic的角度来看不是很流行,但是我更喜欢使用Java的方法,即一个模块->一个类,并将模块命名为该类。我确实了解python样式背后的原因,但是我不太喜欢包含很多类的非常大的文件。尽管折叠,但我发现很难浏览。
另一个原因是版本控制:拥有大文件意味着您的提交倾向于集中在该文件上。这有可能导致解决大量冲突。您还将丢失提交修改特定文件(因此涉及特定类)的其他日志信息。取而代之的是,您看到了对模块文件的修改,仅带有提交注释以了解已进行了哪些修改。
总结一下,如果您喜欢python原理,请参考其他文章的建议。如果您更喜欢类似Java的哲学,请创建一个包含Nib类的Nib.py。
spyder
或类似的编辑器查看类的摘要以帮助导航,并在两个窗口上打开具有相同文件的两个窗格。另外,请阅读PEP8。Python用于编写Python,Java用于Java,但是Python 不用于编写Java。
笔尖很好。如有疑问,请参阅Python样式指南。
从PEP 8:
程序包和模块名称模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。
由于模块名称已映射到文件名,并且某些文件系统不区分大小写,并且截断了长名称,因此,将模块名称选择为相当短是很重要的-在Unix上这不是问题,但可能是代码传输到较旧的Mac或Windows版本或DOS时出现问题。
当用C或C ++编写的扩展模块具有随附的Python模块提供更高级别(例如,面向对象)的接口时,C / C ++模块具有下划线(例如_socket)。
模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。
尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。
当用C或C ++编写的扩展模块具有随附的Python模块提供更高级别(例如,面向对象)的接口时,C / C ++模块具有下划线(例如_socket)。