mirror of
https://github.com/python/cpython.git
synced 2025-11-02 03:01:58 +00:00
Change repr() of a new-style class to say <class 'ClassName'> rather
than <type 'ClassName'>. Exception: if it's a built-in type or an extension type, continue to call it <type 'ClassName>. Call me a wimp, but I don't want to break more user code than necessary.
This commit is contained in:
parent
5c294fb0e6
commit
a4cb78874c
3 changed files with 15 additions and 8 deletions
|
|
@ -114,6 +114,7 @@ static PyObject *
|
|||
type_repr(PyTypeObject *type)
|
||||
{
|
||||
PyObject *mod, *name, *rtn;
|
||||
char *kind;
|
||||
|
||||
mod = type_module(type, NULL);
|
||||
if (mod == NULL)
|
||||
|
|
@ -126,13 +127,19 @@ type_repr(PyTypeObject *type)
|
|||
if (name == NULL)
|
||||
return NULL;
|
||||
|
||||
if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
|
||||
kind = "class";
|
||||
else
|
||||
kind = "type";
|
||||
|
||||
if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
|
||||
rtn = PyString_FromFormat("<type '%s.%s'>",
|
||||
rtn = PyString_FromFormat("<%s '%s.%s'>",
|
||||
kind,
|
||||
PyString_AS_STRING(mod),
|
||||
PyString_AS_STRING(name));
|
||||
}
|
||||
else
|
||||
rtn = PyString_FromFormat("<type '%s'>", type->tp_name);
|
||||
rtn = PyString_FromFormat("<%s '%s'>", kind, type->tp_name);
|
||||
|
||||
Py_XDECREF(mod);
|
||||
Py_DECREF(name);
|
||||
|
|
@ -3365,12 +3372,12 @@ super_repr(PyObject *self)
|
|||
|
||||
if (su->obj)
|
||||
return PyString_FromFormat(
|
||||
"<super: <type '%s'>, <%s object>>",
|
||||
"<super: <class '%s'>, <%s object>>",
|
||||
su->type ? su->type->tp_name : "NULL",
|
||||
su->obj->ob_type->tp_name);
|
||||
else
|
||||
return PyString_FromFormat(
|
||||
"<super: <type '%s'>, NULL>",
|
||||
"<super: <class '%s'>, NULL>",
|
||||
su->type ? su->type->tp_name : "NULL");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue