美文网首页
Python中getattr用法

Python中getattr用法

作者: 嘿嘿_小于同学 | 来源:发表于2017-03-18 14:24 被阅读2103次

    1、官方文档

    getattr(object, name[, default])
    Return the value of the named attribute of object. name must be a string. 
    If the string is the name of one of the object’s attributes, 
    the result is the value of that attribute. 
    For example, getattr(x, 'foobar') is equivalent to x.foobar. 
    If the named attribute does not exist, defaultis returned if provided, 
    otherwise AttributeError is raised.
    

    官方文档中说这个函数作用是返回对象的一个属性,第一个参数是对象实例obj,name是个字符串,是对象的成员函数名字或者成员变量,default当对象没有这个属相的时候就返回默认值,如果没有提供默认值就返回异常。

    >>> class Test(object):
    ...     def func(self):
    ...             print 'I am a test'
    ...
    >>> test = Test()  # 实例化一个对象
    >>> func = getattr(test, 'func') # 使用getattr函数获取func的值
    >>> func()
    I am a test
    >>> func = getattr(test, 'f')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Test' object has no attribute 'f'
    
    >>> func = getattr(test, 'f')  # 使用对象没有的属性,则会出现异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Test' object has no attribute 'f'
    >>>
    
    

    2、提供默认值的写法

    如果对象没有该属性可以提供一个默认值。

    >>> func = getattr(test, 'f', None)
    >>> print func
    None
    >>>
    

    3、使用getattr函数实现工厂模式

    实现一个模块支持不用格式的打印,如html、text(默认)等格式,传入formate不同调用不同方法

    def print_format(data, format='text'):
        # 需要对fomat参数进行验证
        output_function = getattr(obj, 'output_%s' % format, None)
        if not output_function:  # 没有提供的方法
            return 
        return output_function(data)  # 使用对应的方法进行打印
    

    参考文章http://www.cnblogs.com/pylemon/archive/2011/06/09/2076862.html

    相关文章

      网友评论

          本文标题:Python中getattr用法

          本文链接:https://www.haomeiwen.com/subject/rebunttx.html