[Python-Dev] Make __class_getitem__ a class method
Ivan Levkivskyi
levkivskyi at gmail.com
Fri Dec 15 18:00:47 EST 2017
On 15 December 2017 at 19:35, Serhiy Storchaka <storchaka at gmail.com> wrote:
> 15.12.17 20:02, Yury Selivanov пише:
>
>> But nobody decorates __new__ with a @staticmethod. And making
>> __class_getitem__ a @classmethod will only confuse users -- that's all
>> I'm saying.
>>
>> So I'm +1 to keep the things exactly as they are now. It would be
>> great do document that in order to implement __class_getitem__ in C
>> one should add it as METH_STATIC. I also think we should merge your
>> PR that tests that it works the way it's expected.
>>
>
> In this case I suggest to make __class_getitem__ an automatic class method
> like __init_subclass__.
>
> The number of special cases bothers me.
>
I just want to clarify what is proposed. As I understand:
* From the point of view of a pure Python class there will be no difference
with the current behaviour, one just writes
class C:
def __class_getitem__(cls, item):
...
* In `type_new`, `__class_getitem__` will be wrapped in classmethod
* From the point of view of C extensions one will use METH_CLASS and no
tuple unpacking
If this is true that this looks reasonable. If no-one is against, then I
can make a PR.
The only downside to this that I see is that `type.__new__` will be
slightly slower.
--
Ivan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20171216/128d8c55/attachment.html>
More information about the Python-Dev
mailing list