The primary issue I was trying to find a way to reliably and clearly avoid
conflicts between the index labels and the positional argument names.  So
if you have:

__getitem__(self, index, **kwargs)

You can't have an index label named "index", because it conflicts with the
"index" positional argument.

Apparently that isn't an issue if you structure it like this instead:

__getitem__(self, index, /, **kwargs)

But projects would need to know to do that.

Also, as Greg alluded to, it is more consistent with how the indices are
handled currently, which is to use a single variable rather than positional
arguments.  There may also be performance implications, although I am not
certain about that.

On Mon, Aug 3, 2020 at 9:36 PM Steven D'Aprano <st...@pearwood.info> wrote:

> On Mon, Aug 03, 2020 at 05:20:25PM -0400, Todd wrote:
> > Another approach could be too simply pass the labelled indices in a dict
> as
> > a third/fourth positional argument.
>
> Why would we want to even consider a new approach to handling keyword
> arguments which applies only to three dunder methods, `__getitem__`,
> `__setitem__` and `__delitem__`, instead of handling keyword arguments
> in the same way that every other method handles them?
>
> That's not a rhetorical question. If there is an advantage to making
> this a special case, instead of just following the same rules as all
> other methods, I'm open to hearing why it should be treated as a special
> case.
>
>
> > So for indexing
> >
> > b = arr[1, 2, a=3, b=4]
> >
> > Instead of
> >
> > __getitem__(self, (1, 2), a=3, b=4)
> >
> > Just do
> >
> > __getitem__(self, (1, 2), {'a': 3, 'b': 4})
>
> That would be the effect of defining your method with signature:
>
>     def __getitem__(self, index, **kwargs)
>
> so if you specifically want all your keyword arguments bundled into a
> dict, you can easily get it.
>
>
>
> --
> Steven
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/RJGNYW6LH4VPSO2HULRLYKXBN5WSZTBT/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/BTHTU7SV2S25KWCLOFMCGMNLQBGJSTHT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to