On Thursday 10 August 2006 10:24 am, Paul D. Fernhout wrote: > What about constructors like > "Line origin: 10 @ 10 angle: 35 degrees distance: 10 mm" > (which is easy to have in Smalltalk syntax) and so on? And I bet you can > read what it means not even knowing Smalltalk. Would you rather read: > "Line(10, 10, 35, 10)"? > Or at best: > "Line(Point(10, 10), 35, 10)"? > Which is clearer? I think this goes beyond my bias as being experienced > using Smalltalk system keyword syntax. > > Not to be too hard on you or Kirby, but I think it is easy to not see the > value of the unfamiliar, and there is a lot functional foo() syntax makes > difficult and awkward looking (Lisp, a Python ancestor in a sense, has a > bit of this problem too). > > Again, just because Smalltalk has this and Python does not does not mean > I'm saying "use Smalltalk". I'm just saying, how can Python get this > feature? Maybe it can't. Then my next thing is, can the two syntaxes live > side by side -- a possible area for exploration. >
Just so we're all clear on this, you _can_ use keyword arguments in Python. So your constructor could just as well be: Line(origin=Point(10,10), angle_in_degrees=35, distance_in_mm=10) Of course, Python only allows this, it does not force you to use such a style. To me this is at least as descriptive as the SmallTalk version. Perhaps it says something that Python allows this form, but it does not seem to be used often in practice, except when there are large numbers of mostly default-valued parameters. Perhaps the reason is that the keyword form _requires_ more typing (lowering productivity) and the labeling of the arguments (revealing formal parameter names) is pretty much provided by any IDE that is worth its salt. --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA [EMAIL PROTECTED] (319) 352-8360 _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig