Python之自省
“自省的威力”,刚看到这个题目的时候,真是一头雾水啊,只怪我语言功底太差啊!
自省:自我反省,检查之意。
具体联系到Python的意思是:Python可以查看内存中以对象形式存储的函数或模块信息,同样也可以进行相关的操作。
def info(object, spacing=10, collapse=1):
"""Print methods and doc strings.
Takes module, class, list, dictionary, or string."""
methodList = [method for method in dir(object) if callable(getattr(object, method))]
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(str(getattr(object, method).__doc__)))
for method in methodList])
定义了一个函数info,含有三个参数,一个必选参数object,两个可选参数spacing和collapse。
methodlist是通过list的映射加过滤而形成的。
getattr这个函数尤其需要重视,他是自省的核心(当然,我到目前还不能充分的理解这句话),但是可以从上面的语句中可以看出:getattr可以获得对象object的方法method的引用,可以打印出来的是这个对象方法的地址。
对于getattr的理解是重点,其余的较为简单。如list映射,字符串格式化打印,ljust的用法,str的应用等。
浙公网安备 33010602011771号