如何PEP 8命名一个名称为缩略词的类?
我尽量遵循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 这个文档确实提到了这个问题(至少部分提到):
注意:在使用大写字母缩写时,要把缩写的所有字母都大写。因此
HTTPServerError
比HttpServerError
更好。
我理解这意味着,按照 PEP-8 的建议,NASAJPL()
是推荐的命名方式。
就我个人而言,我觉得 NasaJpl()
是最容易识别的,因为大写字母清晰地划分了单词的边界,让这个名字看起来更有特点。