]> granicus.if.org Git - python/commitdiff
Change repr() of a new-style class to say <class 'ClassName'> rather
authorGuido van Rossum <guido@python.org>
Tue, 25 Sep 2001 03:56:29 +0000 (03:56 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 25 Sep 2001 03:56:29 +0000 (03:56 +0000)
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.

Lib/test/test_descrtut.py
Lib/test/test_repr.py
Objects/typeobject.c

index e72567dabe6d24506ad4405a23c423fb2f90088d..a0de4cccb63b2ed1d192e4a875b3cf45d7218649 100644 (file)
@@ -37,16 +37,16 @@ test_1 = """
 Here's the new type at work:
 
     >>> print defaultdict               # show our type
-    <type 'test.test_descrtut.defaultdict'>
+    <class 'test.test_descrtut.defaultdict'>
     >>> print type(defaultdict)         # its metatype
     <type 'type'>
     >>> a = defaultdict(default=0.0)    # create an instance
     >>> print a                         # show the instance
     {}
     >>> print type(a)                   # show its type
-    <type 'test.test_descrtut.defaultdict'>
+    <class 'test.test_descrtut.defaultdict'>
     >>> print a.__class__               # show its class
-    <type 'test.test_descrtut.defaultdict'>
+    <class 'test.test_descrtut.defaultdict'>
     >>> print type(a) is a.__class__    # its type is its class
     1
     >>> a[1] = 3.25                     # modify the instance
index b7d937481ddd6a404b585dfcd6ee5a095a9cceab..1c63e4dc2ce7854bdd355ee8c4b9fafe3e84360c 100644 (file)
@@ -208,7 +208,7 @@ class foo(object):
 ''')
         from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import foo
         eq(repr(foo.foo),
-               "<type 'areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation.foo.foo'>")
+               "<class 'areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation.foo.foo'>")
 
     def test_object(self):
         # XXX Test the repr of a type with a really long tp_name but with no
index 877a3bd870587ac555c76543e388cee7337b2738..964164fd271f847adccd92528dbe62aa75cf0ee8 100644 (file)
@@ -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");
 }