Currently it appears, at least for constructors, that IronPython is
transforming keyword arguments into attribute assignments e.g.
>>> Rectangle(2,3,2,3)
{X=2,Y=3,Width=2,Height=3}
>>> Rectangle(2,3,2,3, Height=20, Location=Point(5, 5), X=10)
{X=10,Y=5,Width=2,Height=20}
You can see that for the last rectangle ctor, IronPython did the
equivalent of this C# code:
r = new Rectangle(2, 3, 2, 3);
r.Height = 20;
r.Location = new Point(5, 5);
r.X = 10;
I would argue strongly that this is a bad idea; keyword arguments should
have the same semantics as they do in CPython. The most obvious reason
that I can think of is that keyword arguments, used as in CPython, can
clarify the meaning of various arguments. Compatibility is also an issue
as is 3rd party tools support. I actually noticed this problem while
writing a script to add .NET Framework intellisense support to
ActiveState's Python IDE. If anyone is interested in either the source
or the datafile, please let me know.
Cheers,
Brian