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
>>>

检查属性是否是可以调用的函数 。

 

posted @ 2015-10-29 10:35  muzinan110  阅读(125)  评论(0编辑  收藏  举报