本文共 1078 字,大约阅读时间需要 3 分钟。
inspect模块可以用来获取对象的信息,对象可以是类,方法。本文中将主要介绍inspect模块中的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 pythonimport inspectclass 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.pyhere is foohere is bezhere is fooi[0] isi[1] is
通过示例可以看出返回结果(name,value)中,value是一个方法实例可以被执行,执行语句是: i[1]()
。
转载地址:http://hworb.baihongyu.com/