On Fri, 24 Jun 2005 15:47:45 -0700, James Stroud wrote: > On Friday 24 June 2005 05:58 am, Steven D'Aprano wrote: >> 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. > > class color: # americanized > red = 0 > blue = 255 > green = 0
The problem is, you have made colour (returning to English spelling instead of foreign) into a class. If you need two colour variables, you have to duplicate the code for the class (perhaps only changing the numeric constants. You can't even make instances from the class, because they all share the same RGB values, which is pretty useless if they are meant to represent different colours. > Less typing than pascal. You have missed the point. I'm not comparing Python vs Pascal for creating records representing RBG values. I'm talking about a Pascal feature that reduced typing by allowing you to use an implicit record. Here is one possible way you might use such a feature as a Python idiom, letting "with" specify an implicit object. Instead of doing this: # read a class attribute print myobject.__class__.myattribute # set an instance attribute myobject.widget.datapoints[myobject.collector] \ = myobject.dispatcher(myobject.widget.current_value) you might do this: with myobject: # read a class attribute print .__class__.myattribute # set an instance attribute .widget.datapoints[.collector] = .dispatcher(.widget.current_value) > Also avoids those stupid little colons. Using := and = for assignment and equality is precisely as stupid as using = and == for assignment and equality. Perhaps less stupid: why do we use == for equals, but not ++ for plus and -- for minus? -- Steven. -- http://mail.python.org/mailman/listinfo/python-list