On Mon, Aug 3, 2020 at 1:49 PM Christopher Barker <[email protected]>
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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/Z6Z2Z6PRFONKT6ADUESHJFRKOPMT7FV7/
Code of Conduct: http://python.org/psf/codeofconduct/