@@ -39,41 +39,41 @@ descr_name(PyDescrObject *descr)
3939}
4040
4141static 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
5155static PyObject *
5256method_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
5861static PyObject *
5962member_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
6567static PyObject *
6668getset_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
7273static PyObject *
7374wrapperdescr_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
7979static int
0 commit comments