[Python-Dev] PEP 309: Partial method application

Steven Bethard steven.bethard at gmail.com
Fri Aug 19 07:33:36 CEST 2005

Josiah Carlson wrote:
> Steven Bethard <steven.bethard at gmail.com> wrote:
> > If we're going to move away from the itemgetter() and attrgetter()
> > style, then we should be consistent about it and provide a solution
> > (or solutions) that answers all of these problems:
> >     obj.attr
> >     obj.attr(*args, **kwargs)
> >     obj[key]
> > I'm not sure that there is a clean/obvious way to do this.
> I thought that:
>   operator.attrgetter() was for obj.attr
>   operator.itemgetter() was for obj[integer_index]

My point exactly.  If we're sticking to the same style, I would expect that for
    obj.method(*args, **kwargs)
we would have something like:
    operator.methodcaller('method', *args, **kwargs)

The proposal by Martin v. Löwis is that this should instead look something like:
    methodcall.method(*args, **kwargs)
which is a departure from the current attrgetter() and itemgetter()
idiom.  I'm not objecting to this approach, by the way.  I think with
the right name, it would probably read well.  I just think that we
should try to be consistent one way or the other.  If we go with
Martin v. Löwis's suggestion, I would then expect that the corrolates
to attrgetter() and itemgetter() would also be included, e.g.:
    attrget.attr   (for obj.attr)
    itemget[key]   (for obj[key])

You can wordify anything if you just verb it.
        --- Bucky Katt, Get Fuzzy

More information about the Python-Dev mailing list