Python中类名与文件名的关联(约定?)
在我学过的Python(还有一些其他语言)中,类的名字应该用小写字母书写,除了每个单词的第一个字母要大写。举个例子:
class FooBar:
...
一个类应该放在一个文件里,这个文件的名字要和类名一样。在这个例子中,文件名应该是foobar.py
。如果我想在其他地方使用这个类foo
,我需要这样做:
from foobar import FooBar
这个规则让我有点困惑。我的直觉告诉我,如果文件名表示一个类,它的第一个字母也应该大写,比如FooBar.py
。这样在文件名里看起来不太好。也许有人可以告诉我,这方面的标准规则是什么?
希望我把我的问题说得明白了。:-)
2 个回答
PEP 8 说:
模块的名字应该简短,并且全部使用小写字母。如果名字中加下划线能让它更容易读懂,那是可以的。Python 的包名也应该简短,全部小写,不过不太建议使用下划线。
我还想补充一点,你不一定要每个文件只放一个类。其实可以把相关的类放在同一个文件里。(当然,有时候一个类放一个文件也可以,但并不是总是这样。)
你所展示的内容是标准的命名规则。
包和模块名称
模块的名字应该简短,并且全部使用小写字母。如果用下划线可以让名字更容易读懂,那是可以的。Python的包名也应该简短,全部小写,不过不太建议使用下划线。
因为模块名对应的是文件名,而有些文件系统对大小写不敏感,并且会截断长名字,所以选择模块名时要尽量简短。这在Unix系统上不会有问题,但在老版本的Mac、Windows或者DOS上可能会遇到麻烦。
如果一个用C或C++写的扩展模块有一个对应的Python模块,提供更高级的接口(比如更面向对象),那么C/C++模块的名字前面会加一个下划线(例如
_socket
)。类名
几乎所有的类名都遵循大写单词的命名规则。内部使用的类名还会在前面加一个下划线。
例如:
from configparser import ConfigParser
(顺便提一下,在Python 2.x中是ConfigParser,但在3.x中改成了小写)。