Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #60235

Re: Method chaining

From Peter Otten <__peter__@web.de>
Subject Re: Method chaining
Date 2013-11-22 16:20 +0100
Organization None
References <528f3f4e$0$29992$c3e8da3$5496439d@news.astraweb.com> <mailman.3035.1385122060.18130.python-list@python.org> <528f6989$0$29992$c3e8da3$5496439d@news.astraweb.com>
Newsgroups comp.lang.python
Message-ID <mailman.3044.1385133587.18130.python-list@python.org> (permalink)

Show all headers | View raw


Steven D'Aprano wrote:

> On Fri, 22 Nov 2013 13:08:03 +0100, Peter Otten wrote:
> 
>> These things are nice to write as long as you omit the gory details, but
>> personally I don't want to see the style it favours in my or other
>> people's code.
> 
> There's not really a lot of difference 

That cuts both ways ;)

> between:
> 
>     obj = MyClass()
>     obj.spam()
>     obj.eggs()
>     obj.cheese()
> 
> and
> 
>     obj = MyClass().spam().eggs().cheese()
> 
> 
> except the first takes up a lot more vertical space. 

I've not yet run short of vertical space ;)

> Chained method calls is idiomatic in some languages. 

Languages with mutable objects?

> If there is a problem with it, it is that
> it doesn't make it clear that each method call is being used only for its
> side-effects, rather than it being a series of distinct objects. But in
> my opinion that flaw is a very minor one.
> 
> The nice thing about using an explicit method chaining call rather than
> building your class to support it by default is that the initial call to
> the adaptor signals that everything that follows is called only for the
> side-effects.
> 
>     obj = chained(MyClass()).spam().eggs().cheese()

      obj = MyClass(); obj.spam(); obj.eggs(); obj.cheese()

OK, that one is disgusting...

Anyway, I'd like to see a sequence of method names taken from actual code 
that profits from this chaining pattern.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Method chaining Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-11-22 11:26 +0000
  Re: Method chaining Chris Angelico <rosuav@gmail.com> - 2013-11-22 22:44 +1100
  Re: Method chaining Peter Otten <__peter__@web.de> - 2013-11-22 13:08 +0100
    Re: Method chaining Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-11-22 14:26 +0000
      Re: Method chaining Peter Otten <__peter__@web.de> - 2013-11-22 16:20 +0100
        Re: Method chaining Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-11-22 16:26 +0000
          Re: Method chaining Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> - 2013-11-22 16:52 +0000
          Re: Method chaining Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> - 2013-11-22 17:55 +0000
      Re: Method chaining Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-11-22 16:38 +0100
      Re: Method chaining Laszlo Nagy <gandalf@shopzeus.com> - 2013-11-23 17:08 +0100
  Re: Method chaining Terry Reedy <tjreedy@udel.edu> - 2013-11-22 07:34 -0500
    Re: Method chaining Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-11-22 14:30 +0000
  Re: Method chaining Rotwang <sg552@hotmail.co.uk> - 2013-11-23 19:53 +0000
    Re: Method chaining Rotwang <sg552@hotmail.co.uk> - 2013-11-24 00:28 +0000
      Re: Method chaining Rotwang <sg552@hotmail.co.uk> - 2013-11-24 00:43 +0000
    Re: Method chaining Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-11-24 14:27 +0000
      Re: Method chaining Rotwang <sg552@hotmail.co.uk> - 2013-11-24 15:01 +0000

csiph-web