[Python-ideas] Accepting multiple mappings as positional arguments to create dicts

Andrés Delfino adelfino at gmail.com
Sun Apr 8 17:18:15 EDT 2018


 Hi!

I thought that maybe dict could accept several mappings as positional
arguments, like this:

class Dict4(dict):
>     def __init__(self, *args, **kwargs):
>         if len(args) > 1:
>             if not all([isinstance(arg, dict) for arg in args]):
>                 raise TypeError('Dict4 expected instances of dict since
> multiple positional arguments were passed')
>
>             temp = args[0].copy()
>
>             for arg in args[1:]:
>                 temp.update(arg)
>
>             super().__init__(temp, **kwargs)
>         else:
>             super().__init__(*args, **kwargs)
>

AFAIK, this wouldn't create compatibility problems, since you can't pass
two positional arguments now anyways.

It would be useful to solve the "sum/union dicts" discussion, for example:
requests.get(url, params=dict(params, {'foo': bar})

Whar are your thoughts?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180408/2434cfe8/attachment.html>


More information about the Python-ideas mailing list