bpo-36433: fix confusing error messages in classmethoddescr_call (GH-12556)
https://bugs.python.org/issue36433
(cherry picked from commit 871309c775fd4d72048bfaa31affd54f9934f7dd)
Co-authored-by: Inada Naoki <songofacandy@gmail.com>
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 277fed9..370b7a7 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -313,20 +313,18 @@
if (!PyType_Check(self)) {
PyErr_Format(PyExc_TypeError,
"descriptor '%V' requires a type "
- "but received a '%.100s'",
+ "but received a '%.100s' instance",
descr_name((PyDescrObject *)descr), "?",
- PyDescr_TYPE(descr)->tp_name,
self->ob_type->tp_name);
return NULL;
}
if (!PyType_IsSubtype((PyTypeObject *)self, PyDescr_TYPE(descr))) {
PyErr_Format(PyExc_TypeError,
- "descriptor '%V' "
- "requires a subtype of '%.100s' "
- "but received '%.100s",
+ "descriptor '%V' requires a subtype of '%.100s' "
+ "but received '%.100s'",
descr_name((PyDescrObject *)descr), "?",
PyDescr_TYPE(descr)->tp_name,
- self->ob_type->tp_name);
+ ((PyTypeObject*)self)->tp_name);
return NULL;
}