mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Merged revisions 84242-84244 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84242 | benjamin.peterson | 2010-08-21 15:01:28 -0500 (Sat, 21 Aug 2010) | 1 line indent properly ........ r84243 | benjamin.peterson | 2010-08-21 15:03:15 -0500 (Sat, 21 Aug 2010) | 1 line fix more indentation ........ r84244 | benjamin.peterson | 2010-08-21 15:08:36 -0500 (Sat, 21 Aug 2010) | 1 line provide sample implementations for attrgetter and methodcaller ........
This commit is contained in:
parent
3ebaed60b4
commit
058981b2ec
1 changed files with 38 additions and 17 deletions
|
|
@ -496,7 +496,23 @@ expect a function argument.
|
||||||
attribute is requested, returns a tuple of attributes. After,
|
attribute is requested, returns a tuple of attributes. After,
|
||||||
``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After,
|
``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After,
|
||||||
``f = attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name,
|
``f = attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name,
|
||||||
b.date)``.
|
b.date)``. Equivalent to::
|
||||||
|
|
||||||
|
def attrgetter(*items):
|
||||||
|
if len(items) == 1:
|
||||||
|
attr = items[0]
|
||||||
|
def g(obj):
|
||||||
|
return resolve_attr(obj, attr)
|
||||||
|
else:
|
||||||
|
def g(obj):
|
||||||
|
return tuple(resolve_att(obj, attr) for attr in items)
|
||||||
|
return g
|
||||||
|
|
||||||
|
def resolve_attr(obj, attr):
|
||||||
|
for name in attr.split("."):
|
||||||
|
obj = getattr(obj, name)
|
||||||
|
return obj
|
||||||
|
|
||||||
|
|
||||||
The attribute names can also contain dots; after ``f = attrgetter('date.month')``,
|
The attribute names can also contain dots; after ``f = attrgetter('date.month')``,
|
||||||
the call ``f(b)`` returns ``b.date.month``.
|
the call ``f(b)`` returns ``b.date.month``.
|
||||||
|
|
@ -559,7 +575,12 @@ expect a function argument.
|
||||||
additional arguments and/or keyword arguments are given, they will be given
|
additional arguments and/or keyword arguments are given, they will be given
|
||||||
to the method as well. After ``f = methodcaller('name')``, the call ``f(b)``
|
to the method as well. After ``f = methodcaller('name')``, the call ``f(b)``
|
||||||
returns ``b.name()``. After ``f = methodcaller('name', 'foo', bar=1)``, the
|
returns ``b.name()``. After ``f = methodcaller('name', 'foo', bar=1)``, the
|
||||||
call ``f(b)`` returns ``b.name('foo', bar=1)``.
|
call ``f(b)`` returns ``b.name('foo', bar=1)``. Equivalent to::
|
||||||
|
|
||||||
|
def methodcaller(name, *args, **kwargs):
|
||||||
|
def caller(obj):
|
||||||
|
return getattr(obj, name)(*args, **kwargs)
|
||||||
|
return caller
|
||||||
|
|
||||||
.. versionadded:: 2.6
|
.. versionadded:: 2.6
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue