Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dc541cd

Browse files
committed
Adjust __repr__ of generic descriptors (ones whose __objclass__ is type)
1 parent f709deb commit dc541cd

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

Objects/descrobject.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,41 +39,41 @@ descr_name(PyDescrObject *descr)
3939
}
4040

4141
static PyObject *
42-
descr_repr(PyDescrObject *descr, const char *format)
42+
descr_repr(PyDescrObject *descr, const char *kind)
4343
{
4444
PyObject *name = NULL;
4545
if (descr->d_name != NULL && PyUnicode_Check(descr->d_name))
4646
name = descr->d_name;
4747

48-
return PyUnicode_FromFormat(format, name, "?", descr->d_type->tp_name);
48+
if (descr->d_type == &PyBaseObject_Type) {
49+
return PyUnicode_FromFormat("<%s '%V'>", kind, name, "?");
50+
}
51+
return PyUnicode_FromFormat("<%s '%V' of '%s' objects>",
52+
kind, name, "?", descr->d_type->tp_name);
4953
}
5054

5155
static PyObject *
5256
method_repr(PyObject *descr)
5357
{
54-
return descr_repr((PyDescrObject *)descr,
55-
"<method '%V' of '%s' objects>");
58+
return descr_repr((PyDescrObject *)descr, "method");
5659
}
5760

5861
static PyObject *
5962
member_repr(PyObject *descr)
6063
{
61-
return descr_repr((PyDescrObject *)descr,
62-
"<member '%V' of '%s' objects>");
64+
return descr_repr((PyDescrObject *)descr, "member");
6365
}
6466

6567
static PyObject *
6668
getset_repr(PyObject *descr)
6769
{
68-
return descr_repr((PyDescrObject *)descr,
69-
"<attribute '%V' of '%s' objects>");
70+
return descr_repr((PyDescrObject *)descr, "attribute");
7071
}
7172

7273
static PyObject *
7374
wrapperdescr_repr(PyObject *descr)
7475
{
75-
return descr_repr((PyDescrObject *)descr,
76-
"<slot wrapper '%V' of '%s' objects>");
76+
return descr_repr((PyDescrObject *)descr, "slot wrapper");
7777
}
7878

7979
static int

0 commit comments

Comments
 (0)