Python getattr

getattr()函数是Python自省的核心函数,具体使用大体如下:

 获取对象引用getattr
Getattr用于返回一个对象属性,或者方法

Python代码
  1. 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 

     

     
Python代码 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" 
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参数的不同,调用不同的函数实现几种格式的输出

Python代码
    1. import statsout   
      def output(data, format="text"):                                
           output_function = getattr(statsout, "output_%s" % format)   
          return output_function(data)  

       

posted @ 2017-04-24 15:26  红领巾下的大刀疤  阅读(363)  评论(0)    收藏  举报
/* 看板娘 */