反射

作者:王蒙
标签:反射
简介:常用的反射相关的函数。

目标读者

Python 开发

预备知识

descriptor,__dict__ 等

问题

__getattr__

__getattribute__

dir()

getattr()

hasattr()

setattr()

isinstance()

inspect 包

解决办法

__getattribute____getattr__

访问对象的属性(a.x 或者 getattr(a, ‘x’))一定会调用 __getattribute__ 方法。

__getattribute__ 默认(如果没有自定义的话)会按照 data-descriptor, dict attribute, non-data-descriptor 的顺序寻找属性值,如果没有找到会调用 __getattr__ 返回属性值。

__getattr__ 默认是抛出 AttributeError 异常。不过时不时可以重定义 __getattr__ 方法(几乎不会自定义 __getattribute__ 方法)。

hasattr

getattr

setattr

isintance

dir

inspect 包:这是 python 反射用的包,用的不多,就算 github 上有名的类库用的也不多。