當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。