Fix object_repr() to include the module (using the same rules as
authorGuido van Rossum <guido@python.org>
Thu, 16 Aug 2001 18:52:43 +0000 (18:52 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 16 Aug 2001 18:52:43 +0000 (18:52 +0000)
type_repr() for when to show or not to show it).

Objects/typeobject.c

index f7f2c9713bfdfbc733350be00c3029fb1f23886a..c38340e2b34d63ada61ba73b90549a3756f9b912 100644 (file)
@@ -912,9 +912,30 @@ object_dealloc(PyObject *self)
 static PyObject *
 object_repr(PyObject *self)
 {
-       char buf[120];
+       PyTypeObject *type;
+       PyObject *mod, *name;
+       char buf[200];
 
-       sprintf(buf, "<%.80s object at %p>", self->ob_type->tp_name, self);
+       type = self->ob_type;
+       mod = type_module(type, NULL);
+       if (mod == NULL)
+               PyErr_Clear();
+       else if (!PyString_Check(mod)) {
+               Py_DECREF(mod);
+               mod = NULL;
+       }
+       name = type_name(type, NULL);
+       if (name == NULL)
+               return NULL;
+       if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
+               sprintf(buf, "<%.80s.%.80s instance at %p>",
+                       PyString_AS_STRING(mod),
+                       PyString_AS_STRING(name),
+                       self);
+       else
+               sprintf(buf, "<%.80s instance at %p>", type->tp_name, self);
+       Py_XDECREF(mod);
+       Py_DECREF(name);
        return PyString_FromString(buf);
 }