On Sat, 25 Jun 2005 15:44:14 -0400, Nicolas Fleury wrote: > Steven D'Aprano wrote: >> One of the things I liked in Pascal was the "with" keyword. You could >> write something like this: >> >> with colour do begin >> red := 0; blue := 255; green := 0; >> end; >> >> instead of: >> >> colour.red := 0; colour.blue := 255; colour.green := 0; >> >> Okay, so maybe it is more of a feature than a trick, but I miss it and it >> would be nice to have in Python. >> > > With PEP343 (I guess in Python 2.5), you will be able to do something like: > with renamed(colour) as c: > c.red = 0; c.blue = 255; c.green = 0 > > I think however it is bad. Better solutions to me would be: > > colour.setRgb(0, 255, 0)
But that is no help, because the setRgb method will be implemented as def setRgb(r, g, b): self.red = r; self.green = g; self.blue = b which is exactly the usage case for a with statement: def setRgb(r, g, b): with self: .red = r; .green = g; .blue = b > or > > c = myVeryLongNameColour > c.red = 0; c.blue = 255; c.green = 0 Namespace pollution. It might not matter if c is a temporary variable inside a function or method, but it does matter if your top-level code is full of such constructs. Or for that matter, your interactive Python session. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list