如何PEP 8命名一个名称为缩略词的类?

98 投票
8 回答
25559 浏览
提问于 2025-04-15 22:49

我尽量遵循Python代码的风格指南,也就是大家常说的PEP 8。根据这个指南,给类起名字的推荐方式是使用大驼峰命名法,也就是每个单词的首字母都要大写:

几乎没有例外,类名都使用大写字母单词的命名规则。如果是内部使用的类名,前面还会加一个下划线。

如果我的类名是由两个缩写组成的(在正式英语中应该大写),那我该怎么保持和PEP 8一致呢?比如,如果我的类名是'NASA JPL',你会怎么命名它呢?:

class NASAJPL():  # 1
class NASA_JPL(): # 2
class NasaJpl():  # 3

我在用#1,但看起来有点奇怪;#3也看起来奇怪,而#2似乎违反了PEP 8。

8 个回答

13

在这个特定的情况下,#1 对我来说看起来没问题(前提是它真的是个缩写)。我很好奇,这个缩写代表什么(还有这个类实例到底是什么,也许用 module 会更合适)?

class NASAJPL:

当你把两个缩写结合在一起时,通常你是想把功能分配到不同的模块上(因为你永远不知道什么时候会给你的程序添加下一个功能):

from NASA import JPL
from NASA import ARC
42

正如其他人提到的,NASAJPL 可能是符合 PEP-8 标准的写法。

不过,我可能会选择用 NasaJPL。因为当你读这个词的时候,“NASA”是一个整体发音,而“JPL”则是一个个字母拼出来的。

你可以说这样写是符合 PEP-8 的,因为“NASA”是一个缩略词,而“JPL”是一个缩写(如果你想要更严格一点,可以说是首字母缩略词)。详细了解

118

PEP-8 这个文档确实提到了这个问题(至少部分提到):

注意:在使用大写字母缩写时,要把缩写的所有字母都大写。因此 HTTPServerErrorHttpServerError 更好。

我理解这意味着,按照 PEP-8 的建议,NASAJPL() 是推荐的命名方式。

就我个人而言,我觉得 NasaJpl() 是最容易识别的,因为大写字母清晰地划分了单词的边界,让这个名字看起来更有特点。

撰写回答