python获取对象信息模块inspect

前言

inspect模块可以用来获取对象的信息,对象可以是类,方法。本文中将主要介绍inspect模块中的getmembers()方法。

getmembers()

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

返回一个对象的所有成员,以(name, value)的方式,通过predicate参数可以有选择性地返回结果。
参数:
* object 对象,可以是类或者方法
* predicate 一个可选的函数参数,只有被它判定为True的成员,才会被返回,可选为该模块的一系列判定对象类型的方法:ismodule,isclass,ismethod,isfunction,isbuiltin。

示例

#!/usr/bin/env python
import inspect
class Cls(object):
    def __init__(self):
        pass
    def foo(self):
        print 'here is foo'

    def bez(self):
        print 'here is bez'
    def test(self):
        for i in inspect.getmembers(self, predicate=inspect.ismethod):
            if i[0] == 'foo':
                i[1]() 
                print 'i[0] is %s' % type(i[0])
                print 'i[1] is %s' % type(i[1])

cls = Cls()
cls.foo()
cls.bez()
cls.test()

执行结果:

PS C:\Project\python> python .\test_inspect.py
here is foo
here is bez
here is foo
i[0] is <type 'str'>
i[1] is <type 'instancemethod'>

通过示例可以看出返回结果(name,value)中,value是一个方法实例可以被执行,执行语句是: i[1]()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值