5.4.6. 模块的 repr
默认情况下,全部模块都具有一个可用的 repr,但是你可以依据上述的属性设置,在模块的规格说明中更为显式地控制模块对象的 repr。
如果模块具有 spec (__spec__
),导入机制将尝试用它来生成一个 repr。 如果生成失败或找不到 spec,导入系统将使用模块中的各种可用信息来制作一个默认 repr。 它将尝试使用 module.__name__
, module.__file__
以及 module.__loader__
作为 repr 的输入,并将任何丢失的信息赋为默认值。
以下是所使用的确切规则:
如果模块具有
__spec__
属性,其中的规格信息会被用来生成 repr。 被查询的属性有 “name”, “loader”, “origin” 和 “has_location” 等等。如果模块具有
__file__
属性,这会被用作模块 repr 的一部分。如果模块没有
__file__
但是有__loader__
且取值不为None
,则加载器的 repr 会被用作模块 repr 的一部分。对于其他情况,仅在 repr 中使用模块的
__name__
。
在 3.4 版更改: loader.module_repr()
已弃用,导入机制现在使用模块规格说明来生成模块 repr。
为了向后兼容 Python 3.3,如果加载器定义了 module_repr()
方法,则会在尝试上述两种方式之前先调用该方法来生成模块 repr。 但请注意此方法已弃用。