当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python operator.attrgetter用法及代码示例


用法:

operator.attrgetter(attr)
operator.attrgetter(*attrs)

返回一个从其操作数中获取 attr 的可调用对象。如果请求了多个属性,则返回一组属性。属性名称也可以包含点。例如:

  • f = attrgetter('name') 之后,调用 f(b) 返回 b.name
  • f = attrgetter('name', 'date') 之后,调用 f(b) 返回 (b.name, b.date)
  • f = attrgetter('name.first', 'name.last') 之后,调用 f(b) 返回 (b.name.first, b.name.last)

相当于:

def attrgetter(*items):
    if any(not isinstance(item, str) for item in items):
        raise TypeError('attribute name must be a string')
    if len(items) == 1:
        attr = items[0]
        def g(obj):
            return resolve_attr(obj, attr)
    else:
        def g(obj):
            return tuple(resolve_attr(obj, attr) for attr in items)
    return g

def resolve_attr(obj, attr):
    for name in attr.split("."):
        obj = getattr(obj, name)
    return obj

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 operator.attrgetter。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。