Python中类名与文件名的关联(约定?)

77 投票
2 回答
42499 浏览
提问于 2025-04-16 17:30

在我学过的Python(还有一些其他语言)中,类的名字应该用小写字母书写,除了每个单词的第一个字母要大写。举个例子:

class FooBar:
    ...

一个类应该放在一个文件里,这个文件的名字要和类名一样。在这个例子中,文件名应该是foobar.py。如果我想在其他地方使用这个类foo,我需要这样做:

from foobar import FooBar

这个规则让我有点困惑。我的直觉告诉我,如果文件名表示一个类,它的第一个字母也应该大写,比如FooBar.py。这样在文件名里看起来不太好。也许有人可以告诉我,这方面的标准规则是什么?

希望我把我的问题说得明白了。:-)

2 个回答

19

PEP 8 说:

模块的名字应该简短,并且全部使用小写字母。如果名字中加下划线能让它更容易读懂,那是可以的。Python 的包名也应该简短,全部小写,不过不太建议使用下划线。

我还想补充一点,你不一定要每个文件只放一个类。其实可以把相关的类放在同一个文件里。(当然,有时候一个类放一个文件也可以,但并不是总是这样。)

72

你所展示的内容是标准的命名规则。

包和模块名称

模块的名字应该简短,并且全部使用小写字母。如果用下划线可以让名字更容易读懂,那是可以的。Python的包名也应该简短,全部小写,不过不太建议使用下划线。

因为模块名对应的是文件名,而有些文件系统对大小写不敏感,并且会截断长名字,所以选择模块名时要尽量简短。这在Unix系统上不会有问题,但在老版本的Mac、Windows或者DOS上可能会遇到麻烦。

如果一个用C或C++写的扩展模块有一个对应的Python模块,提供更高级的接口(比如更面向对象),那么C/C++模块的名字前面会加一个下划线(例如 _socket)。

类名

几乎所有的类名都遵循大写单词的命名规则。内部使用的类名还会在前面加一个下划线。

(Python风格指南)


例如:

from configparser import ConfigParser

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

撰写回答