python反射
反射的作用就是列出对象的所有属性和方法,反射就是告诉我们,这个对象到底是什么,提供了什么功能 。
介绍一种可以动态导入的方法。
以字符串的形式导入模块
以字符串的形式执行函数
首先,介绍一个函数 __import__, 这个函数传入的参数是module的名字,返回这个module,然后,在结合之前介绍过的getattr,于是,我们可以写出下面两句代码,实现对象的自省。


举个例子:
>>> import json>>> dir(json) ['JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_default_decoder', '_default_encoder', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']>>> |
如上所看,dir 是一个内置的 反射函数 ,可以列出对象的属性和方法。
再看另外一个内置的方法 :getattr
>>> getattr(json,'encoder')<module 'json.encoder' from '/usr/lib/python2.7/json/encoder.pyc'>>>> getattr(json,'load')<function load at 0x7f66af736140>>>> |
可以取出指定属性
再看另外一个方法 :callable
>>> callable(getattr(json,'load'))True>>> callable(getattr(json,'encoder'))False>>> |
检查属性是否是可以调用的函数 。

浙公网安备 33010602011771号