On 8/23/2010 11:57 AM, Tim Daneliuk wrote:
On 8/23/2010 10:35 AM, Jon Clements wrote:

Another more generic option would be to use methodcaller from the
operator module.

Could you say a bit more about just why you prefer this approach?
Clearly, it *is* more generic, but in looking it over, it seems that
methodcaller is less readable and intuitive ... at least to my eyes ...

He did not say 'preferable', only more generic, as you agree, and the generic solution, buried away in operator, is a good thing to know about.

The OP wanted to convert (methodname, string) pairs to a call of methodname on strings. Since there is only one class, str, involved, mapping methodname to str.methodname works. If, for instance, the OP instead had to map (methodname, bytes_or_string) to a call, a not unreasonable generalization, str.methodname does not work (with bytes) but methodcaller(methodname) will, with bytes or string.

>>> methodcaller('upper')(b'abc')
b'ABC'
>>> methodcaller('upper')('abc')
'ABC'

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to