Will Dx

人世一身霜雪, 归来仍是少年.

python_动态调用函数getattr

Posted April 07, 2017

1.说明:动态调用函数也称工厂模式 2.实现:getattr() 3.描述:getattr函数用于返回一个对象属性,或者方法

Raw
例1:
Bash
定义一个类A,实例化一个对象a;通常要调用a的方法使用a.method(),使用a的属性使用a.a;
    假设类A有许多方法,而我们希望通过用户输入的参数来确认调用的方法:
    [ERROR]错误的方法,因为此时arg1是字符串,这样做肯定错
    arg1 = raw_input()
    a.arg1()
    [Right]正确的方法,此时arg1为实例a的arg1名称表示的方法,<type 'instancemethod'>
    arg1 = getattr(a,'arg1')
    a.arg1()
    
    代码部分:
    class A:   
        def __init__(self):   
            self.a = 'a'  
        def method(self):   
            print "method print"  
      
    a = A()  
    #如果有属性a则打印a,否则打印default 
    print getattr(a, 'a', 'default')
    #如果有属性b则打印b,否则打印default
    print getattr(a, 'b', 'default')    
    #如果有方法method,否则打印其地址,否则打印default   
    print getattr(a, 'method', 'default')   
    #如果有方法method,运行函数并打印None否则打印default  
    print getattr(a, 'method', 'default')()

4.总结:getattr函数在实现属性和方法的动态调用时非常好用哦!