[Python-ideas] OrderedDict for kwargs and class statement namespace
Ethan Furman
ethan at stoneleaf.us
Thu Feb 28 17:41:17 CET 2013
On 02/28/2013 08:14 AM, Don Spaulding wrote:
>
>
>
> On Thu, Feb 28, 2013 at 9:48 AM, Antoine Pitrou <solipsis at pitrou.net <mailto:solipsis at pitrou.net>> wrote:
>
> Le Thu, 28 Feb 2013 09:30:50 -0600,
> Don Spaulding <donspauldingii at gmail.com <mailto:donspauldingii at gmail.com>>
> a écrit :
> >
> > For an example of the "recommended" way to get the ordering of your
> > class attributes:
> >http://stackoverflow.com/questions/3288107/how-can-i-get-fields-in-an-original-order
>
> This is already possible with the __prepare__ magic method.
> http://docs.python.org/3.4/reference/datamodel.html#preparing-the-class-namespace
>
>
> Sure. Case in point: Django has been working around it since at least python 2.4.
>
> > It seems to me that the "right thing" for python to do when given an
> > ordered list of key=value pairs in a function call or class
> > definition, is to retain the order. So what's an acceptable level of
> > performance regression for the sake of doing things the "right way"
> > here?
>
> Or, rather, what is the benefit of doing things "the right way"? There
> are incredibly few cases for relying on the order of key=value pairs in
> function calls.
>
>
> "If you build it, they will come..."
>
> When I originally encountered the need for python to retain the order of kwargs that my caller specified, it surprised
> me that there wasn't more clamoring for kwargs being an OrderedDict. However, since my development timeline didn't
> allow for holding the project up while a patch was pushed through python-dev and out into a real python release, I
> sucked it up, forced my calling code to send in hand-crafted OrderedDicts and called it a day. I think most developers
> don't even stop to think that the language *could* be different, they just put in the workaround and move on.
>
> I think if python stopped dropping the order of kwargs on the floor today, you'd see people start to rely on the order
> of kwargs tomorrow.
+1
I'd already be relying on it if it were there.
--
~Ethan~
More information about the Python-ideas
mailing list