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

时间:2011-05-12 13:18:41

标签: python naming-conventions filenames classname

在python(以及其他一些语言)中,我学到了一个类的名称应该用小写字母写,除了第一个字母,它应该是大写字母。例如:

class FooBar:
    ...

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

from foobar import FooBar

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

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

2 个答案:

答案 0 :(得分:52)

您所呈现的是标准惯例。

  

包裹和模块名称

     

模块应该有简短的全小写名称。下划线可以   如果它提高了可读性,则在模块名称中使用。 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中改为小写)。

答案 1 :(得分:11)

PEP 8说:

  

模块应该有简短的全小写名称。可以使用下划线   在模块名称中,如果它提高了可读性。 Python包应该   也有简短的全小写名称,虽然使用下划线   不鼓励。

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