From: Guido van Rossum Date: Mon, 14 Apr 2003 21:20:26 +0000 (+0000) Subject: super_getattro(): kill some dead code; explain a mystery. X-Git-Tag: v2.3c1~1194 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2fd02eb80fdfd7b651d3df7e09a0b076e126cc03;p=python super_getattro(): kill some dead code; explain a mystery. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 1c1b197416..a900f55e46 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -5355,23 +5355,6 @@ super_getattro(PyObject *self, PyObject *name) if ((PyObject *)(su->type) == PyTuple_GET_ITEM(mro, i)) break; } -#if 0 - if (i >= n && PyType_Check(su->obj)) { - starttype = (PyTypeObject *)(su->obj); - mro = starttype->tp_mro; - if (mro == NULL) - n = 0; - else { - assert(PyTuple_Check(mro)); - n = PyTuple_GET_SIZE(mro); - } - for (i = 0; i < n; i++) { - if ((PyObject *)(su->type) == - PyTuple_GET_ITEM(mro, i)) - break; - } - } -#endif i++; res = NULL; for (; i < n; i++) { @@ -5383,7 +5366,10 @@ super_getattro(PyObject *self, PyObject *name) else continue; res = PyDict_GetItem(dict, name); - if (res != NULL && !PyDescr_IsData(res)) { + /* Skip data descriptors because when obj_type is a + metaclass, we don't want to return its __class__ + descriptor. See supers() in test_descr.py. */ + if (res != NULL && !PyDescr_IsData(res)) { Py_INCREF(res); f = res->ob_type->tp_descr_get; if (f != NULL) {