How do I chain methods?

Terry Reedy tjreedy at udel.edu
Mon Oct 25 13:48:21 EDT 2010


On 10/24/2010 11:42 PM, Chris Rebert wrote:
> On Sun, Oct 24, 2010 at 4:11 PM, James Mills
> <prologic at shortcircuit.net.au>  wrote:
>> On Mon, Oct 25, 2010 at 9:02 AM, Chris Rebert<clp2 at rebertia.com>  wrote:
>>> Method chaining is usually* not idiomatic in Python.
>>
>> I don't agree but anyway... I've just not seen it commonly used
>> amongst python programmers.
>
> If Python wanted to encourage method-chaining-style, then list.sort(),
> list.reverse(), and several other built-in type methods would (ala
> Ruby) return self rather than None. Since they don't, and since
> "uncommon idiom" is a near-oxymoron, I think we can safely conclude
> that method chaining isn't idiomatic in Python.

It is intentionally not idiomatic for methods that mutate or otherwise 
operate strictly by side-effect, as in the OP example.

It *is* idiomatic for methods that return new objects.

 >>> s = ' abc def '
 >>> s.strip().title()
'Abc Def'

And, of course, it is used internally to implement expressions with 
operators that also produce new objects.

 >>> 3*2+1 == 3 .__mul__(2) . __add__(1)
True

-- 
Terry Jan Reedy




More information about the Python-list mailing list