在 python 中命名类和命名它们的文件之间的关联(约定?)

Posted

技术标签:

【中文标题】在 python 中命名类和命名它们的文件之间的关联(约定?)【英文标题】:Association between naming classes and naming their files in python (convention?) 【发布时间】:2011-08-24 03:04:09 【问题描述】:

在python(和其他一些语言)中,我了解到,一个类的名称应该用小写字母写,除了每个单词的第一个字母应该是大写字母。示例:

class FooBar:
    ...

一个类应该放在一个文件中,与该类同名。在此示例中,它将是一个文件 foobar.py。如果我想在某处导入 foo 类,我必须这样做:

from foobar import FooBar

这个约定让我有点困惑。我的直觉告诉我,如果文件名表示一个类,那么它的第一个字母也应该大写,比如FooBar.py。这在文件名中看起来并不漂亮。也许有人可以告诉我这个标准约定是什么?

我希望我的问题可以理解。 :-)

【问题讨论】:

【参考方案1】:

您介绍的是标准约定。

包和模块名称

模块应该有简短的全小写名称。下划线可以 如果它提高可读性,则在模块名称中使用。 Python 包 还应该有简短的全小写名称,尽管使用下划线 气馁。

由于模块名称映射到文件名,并且某些文件系统是 不区分大小写并截断长名称,重要的是模块 名称选择相当短——这在 Unix 上不是问题, 但是当代码传输到旧的 Mac 或 Windows 版本,或 DOS。

当使用 C 或 C++ 编写的扩展模块具有随附的 Python 时 提供更高级别的模块(例如更面向对象) 接口,C/C++ 模块有一个前导下划线(例如_socket)。

类名

几乎无一例外,类名都使用 CapWords 约定。 内部使用的类还有一个前导下划线。

(Python Style Guide)


参见例如

from configparser import ConfigParser

(顺便说一下,在 Python 2.x 中是 ConfigParser,但在 3.x 中改为小写)。

【讨论】:

我不禁注意到这描述了模块和类名,但没有提及文件名。我相信这个问题是关于两者的。我发现没有人提到如何命名文件的每一个 python 教程和评论是什么!?!?! @Scott 命名模块的约定是您问题的答案。模块基本上是 Python 中的一个文件,包含一个或多个类和/或函数。【参考方案2】:

PEP 8 说:

模块应该有简短的全小写名称。可以使用下划线 如果它提高了可读性,则在模块名称中。 Python 包应该 也有简短的全小写名称,尽管使用下划线 气馁。

我还要注意,每个文件不一定只有一个类。相反,您应该将相关的类一起包含在同一个文件中。 (当然在某些情况下,一个文件有一个类是可行的,但并非总是如此)

【讨论】:

好点!如果有人在查看一个文件中的三个类的高级图片时遇到问题,一个支持代码折叠的优秀编辑器会有所帮助。

以上是关于在 python 中命名类和命名它们的文件之间的关联(约定?)的主要内容,如果未能解决你的问题,请参考以下文章

在不同的命名空间中定义基类和派生类时的编译错误

typescript - 8.命名空间

关于命名空间namespace

类、包、命名空间和模块之间有啥区别?

python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。

python模块未找到错误没有模块命名