摘要:除了大量控制对象行为的“特殊方法”,Python 还提供了一系列特殊属性,用于描述模块、函数、实例和类的元信息。
除了大量控制对象行为的“特殊方法”,Python 还提供了一系列特殊属性,用于描述模块、函数、实例和类的元信息。
这些属性通常以 __name__、__doc__、__dict__ 等形式出现,是自省、调试、反射乃至框架设计的基石。
Ⅰ. 模块的特殊属性
Module Special Attributes
模块对象在导入时由解释器创建,带有一系列预定义属性:
__name__:模块名称
__doc__:模块文档字符串
__file__:模块源文件路径(内建模块可能无此属性)
__package__:所属包名
__loader__:导入该模块的加载器对象
__spec__:模块的导入规范(ModuleSpec 对象)
__cached__:字节码缓存文件路径(.pyc)
__builtins__:内建命名空间引用
__all__:显式导出符号列表(供 from module import * 使用)
__path__:包模块特有,用于包内子模块搜索
详解请参阅:
Ⅱ. 函数的特殊属性
Function Special Attributes
函数对象由 Python 在定义时自动生成,具有描述签名、闭包和代码信息的属性。
func.__name__:函数名
func.__doc__:函数文档字符串
func.__module__:函数定义所在的模块名
func.__qualname__:函数的限定名(含类名/嵌套层级)
func.__defaults__:位置参数默认值元组
func.__kwdefaults__:关键字参数默认值字典
func.__annotations__:参数与返回值注解
func.__code__:函数的代码对象(字节码、变量名等)
func.__globals__:函数定义所在的全局命名空间
func.__closure__:闭包单元格元组(引用外部变量)
func.__dict__:函数对象的自定义属性字典
详解请参阅:
Ⅲ. 实例(对象)的特殊属性
Instance Special Attributes
实例是类的产物,运行时通常具有以下关键属性。
obj.__dict__:实例属性存储字典(若类定义了 __slots__ 可能不存在)
obj.__class__:实例所属类对象
obj.__doc__:文档字符串(默认继承自类)
obj.__module__:定义该实例所属类的模块名
obj.__weakref__ :保存对象的弱引用信息
详解请参阅:
Ⅳ. 类的特殊属性
Class Special Attributes
类本身是 type 的实例,作为“元对象”同样具有大量属性。
cls.__name__:类名
cls.__qualname__:类的限定名(含嵌套路径)
cls.__module__:类定义所在模块名
cls.__doc__:类文档字符串
cls.__bases__:基类元组
cls.__mro__:方法解析顺序(Method Resolution Order)
cls.__dict__:类的命名空间字典(存放方法和属性)
cls.__annotations__:类变量的类型注解字典
cls.__weakref__:支持对类对象的弱引用
cls.__slots__:若定义,限制实例属性集合、节省内存
详解请参阅:
小结
模块属性:提供名称、路径与导入机制信息。
函数属性:揭示签名、闭包和码对象。
实例属性:记录对象状态与其所属类。
类属性:反映继承结构、命名空间和弱引用机制。
特殊属性描述“对象是什么”,而特殊方法则定义“对象能做什么”。二者共同构成 Python 对象模型的核心。
“点赞有美意,赞赏是鼓励”
来源:优美教育