Mengembalikan objek callable yang mengambil attr dari operannya. Jika lebih dari satu atribut diminta, mengembalikan serangkaian atribut. Nama atribut juga bisa berisi titik. Misalnya:
operator.attrgetter(attr)
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