On Tue, May 30, 2017 at 7:06 AM, Matt Gilson <m...@getpattern.com> wrote:
> On Mon, May 29, 2017 at 11:59 AM, Neil Girdhar <mistersh...@gmail.com>
> wrote:
>>
>> A long time ago, I proposed that the dict variants (sorteddict,
>> defaultdict, weakkeydict, etc.) be made more discoverable by having them
>> specified as keyword arguments and I got the same feedback that the poster
>> here is getting.  Now, instead of moving these classes into dict, why not
>> have a factory like
>>
>> dict.factory(values=None, *, ordered=True, sorted=False,
>> has_default=False, weak_keys=False, weak_values=False, …)
>
>
> Hmm ... I don't think that I like this.  For one, it greatly increases the
> amount of surface area that needs to be maintained in the standard library.
> As far as I know, we don't currently have a OrderedWeakKeyDictionary with
> defaultdict behavior.

"defaultdict behavior" can be tacked onto anything:

>>> class OrderedDefaultDict(collections.OrderedDict):
...     def __missing__(self, key):
...         self[key] = []
...         return self[key]

The core functionality of defaultdict is part of dict (the fact that
__missing__ gets called). The core functionality of weak references
could easily be added to dict too, if something like this were wanted.
So a lot of these would indeed be orthogonal. That said, though, I
don't know of many situations in which you would need an
OrderedWeakKeyDictionary, so if you have to write some custom code to
make that happen, so be it.

ChrisA
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to