[Python-Dev] Make class_getitem a class method (original) (raw)
Serhiy Storchaka storchaka at gmail.com
Fri Dec 15 10:00:23 EST 2017
- Previous message (by thread): [Python-Dev] Guarantee ordered dict literals in v3.7?
- Next message (by thread): [Python-Dev] Make __class_getitem__ a class method
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
The class itself always is passed as the first argument to class_getitem():
cls.__class_getitem__(cls, item)
I propose to make class_getitem a class method. This will make simpler implementing it in C. Currently it should be declared with flags METH_VARARGS|METH_STATIC and implementing as
static PyObject * generic_class_getitem(PyObject *Py_UNUSED(self), PyObject *args) { PyObject *type, *item; if (!PyArg_UnpackTuple(args, "class_getitem", 2, 2, &type, &item)) { return NULL; } ... }
Note an unused parameter and the need of manual unpacking arguments.
If use it as a class method it should be declared with flags METH_O|METH_CLASS and implemented as
static PyObject * generic_class_getitem(PyObject *type, PyObject *item) { ... }
See https://github.com/python/cpython/pull/4883 for sample.
- Previous message (by thread): [Python-Dev] Guarantee ordered dict literals in v3.7?
- Next message (by thread): [Python-Dev] Make __class_getitem__ a class method
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]