python--inspect

Posted on 2018-09-26 10:17  eilinge  阅读(308)  评论(0编辑  收藏  举报

  给大家介绍下用的比较少的模块--Inspect

inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等

import hello
import inspect

print(inspect.getsource(hello))

def h():
    print 'hello'

def hm(m,k):
    print m,k

class w(object):
    def __init__(a,self):
        name = a
    def g(self):
        print name,'hello world'

特定的方法调用

#返回对象的源代码
>>> inspect.getsource(hello.w)
"class w(object):\n    def __init__(a,self):\n"
"name = a\n    def g(self):\n        print name,'hello world'\n"

#方便的获取__init__的**参数
>>> inspect.getargspec(hello.w.__init__)
ArgSpec(args=['a', 'self'], varargs=None, keywords=None, defaults=None)

可以通过help()方法获取该使用函数的文本

>>> help(inspect.getsourcefile)
Help on function getsourcefile in module inspect:

getsourcefile(object)
    Return the filename that can be used to locate an object's source.
    Return None if no way can be identified to get the source.
    
>>> help(inspect.getmembers)
Help on function getmembers in module inspect:

getmembers(object, predicate=None)
    Return all members of an object as (name, value) pairs sorted by name.
    Optionally, only return members that satisfy a given predicate.

>>> help(inspect.stack)
Help on function stack in module inspect:

stack(context=1)
    Return a list of records for the stack above the caller's frame.