getattr()函数是Python自省的核心函数,具体使用大体如下:
10.1.5
Getattr用于返回一个对象属性,或者方法
- class
A: -
def __init__(self): -
self.a = 'a' -
def method(self): -
print "method print" -
- a = A()
- print
getattr(a, 'a', 'default') #如果有属性a则打印a,否则打印default - print
getattr(a, 'b', 'default') #如果有属性b则打印b,否则打印default - print
getattr(a, 'method', 'default') - #如果有方法method,否则打印其地址,否则打印default
- print
getattr(a, 'method', 'default')() - #如果有方法method,运行函数并打印None否则打印default
注:使用getattr可以轻松实现工厂模式。
例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出
- import
statsout - def
output(data, format="text"): -
output_function = getattr(statsout, "output_%s" % format) -
return output_function(data)