On 02/21/2014 10:37 PM, Terry Reedy wrote:
On 2/21/2014 12:30 PM, Chris Angelico wrote:
It's common in languages like C++ to return *this by reference if there's nothing else useful to return. It's convenient, it doesn't cost anything much, and it allows method chaining. The Python convention, on the other hand, is to return self only if there's a very good reason to,
Off the top of my head, I cannot think of any methods that return self. (If there are some, someone please remind or inform me.)
It is (in my experience) a common practice, precisely to allow method chaining, in diverse libs. The most common cases happen at object construction, where chaining adds or changes diverse object properties. This is also at times combined with overloading of language features. In the following, from a parsing lib, the init method returns its object, and __call__ is overriden to a method that sets an match actions on the pattern: symbol_def = Compose(id, ":=", expr)(put_symbol) [This defines a patten for symbol defs (read: assignment of a new var); when the pattern matches, the symbol is put in a symbol table.] However, this is probably only ok for such libs that developpers are forced to study intensely before being able to use them efficiently. Otherwise, in itself the code is pretty unreadable I guess. Also, I don't find the idea of having a builtin construct for such hacks a good idea. Libs for which this may be practicle can return self --end of the story. d