Python文件名的下划线前缀是什么?
问题描述
以cherryPy
为例,有如下文件:
__init__.py
_cptools.py
它们有什么不同?这意味着什么?
解决方案
__...__
表示保留的名称(包括文件名和其他名称)。您不应使用双下划线表示法为编造您自己的名称;如果您使用现有名称,则它们具有特殊功能。
__init__.py
定义了包的‘main’单元;它还会导致Python将特定目录视为一个包。它是您调用import cherryPy
时使用的单位(cherryPy
是一个目录)。这在Modules tutorial中有简要说明。
另一个示例是__eq__
方法,它为类提供相等比较。您可以直接调用这些方法(例如,当您使用==
运算符时,您可以隐式使用它们);然而,更新的Python版本可能定义更多这样的方法,因此您不应该发明您自己的__
名称,因为它们可能会发生冲突。您可以在Data model文档中找到相当详细的此类方法列表。
_...
通常用作"内部"名称。例如,以_
开头的模块不应该直接使用;类似地,以_
开头的方法应该是私有的,依此类推。这只是一种惯例,但你应该尊重它。
相关文章