On Mon, Aug 3, 2020 at 1:49 PM Christopher Barker <python...@gmail.com> wrote:
> > Yes, that would be correct. However, the function could instead be defined >> as: >> >> def __getitem__(self, index, /, **kwargs): >> ... >> >> and then there'd be no conflict (as "self" and "index" must be passed >> positionally). In effect, the naive spelling (which permits self and >> index to be passed as keywords) would be a subtle bug that could >> easily be corrected. >> > > sure, but it would be a bug in a LOT of existing code! > > I wonder, if this were to be introduced, if the interpreter could have a > special case that would call __getitem__ in a special way to avoid this bug > in old code. > Good edge case to consider. But would it really be such a problem? If you have an existing class like this: class C: def __getitem__(self, index): ... c = C() then presumably calling `c[1, index=2]` would just be an error (since it would be like attempting to call the method with two values for the `index` argument), and ditto for `c[1, 2, 3, index=4]`. The only odd case might be `c[index=1]` -- but presumably that would be equivalent to `c[(), index=1]` so it would still fail. -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ 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/Z6Z2Z6PRFONKT6ADUESHJFRKOPMT7FV7/ Code of Conduct: http://python.org/psf/codeofconduct/