[Python-ideas] Adding collections.abc.Ordered

Andrew Barnert abarnert at yahoo.com
Sun Nov 8 19:42:05 EST 2015


On Nov 8, 2015, at 14:10, Serhiy Storchaka <storchaka at gmail.com> wrote:
> 
>> On 08.11.15 23:12, Sjoerd Job Postmus wrote:
>> On 8 Nov 2015, at 20:06, Amir Rachum <amir at rachum.com
>> <mailto:amir at rachum.com>> wrote:
>>> As part of BasicStruct I intend to allow the use of mapping types as
>>> __slots__, with the semantics of default values..
>>> So it'll look something like this:
>>> 
>>>    class Point(BasicStruct):
>>>        __slots__ = {'x': 5, 'y': 7}
>> 
>> So instead they'll write
>>     __slots__ = OrderedDict({'x': 5, 'y': 7})
>> Causing the same issues?
> 
> Perhaps OrderedDict should reject unordered sources. Hey, here is yet one use case!

I've maintained code that does this:

    self.headers = OrderedDict(headers)
    self.origheaders = len(headers)

… so it can later do this:

    altheaders = list(self.headers.items())[self.origheaders:]

Not a great design, but one that exists in the wild, and would be broken by OrderedDict not allowing a dict as an argument.

Also, this wouldn't allow creating an OrderedDict from an empty dict (which seems far less stupid, but I didn't lead with it because I can't remember seeing it in real code).



More information about the Python-ideas mailing list