Kaydet (Commit) b7f1afe4 authored tarafından Guido van Rossum's avatar Guido van Rossum

Change the default repr() and str() of class instance objects to look

like <modulename.classname instance at ...> (to match the repr() of
class objects.
üst 5c38bf6c
...@@ -655,13 +655,21 @@ instance_repr(inst) ...@@ -655,13 +655,21 @@ instance_repr(inst)
if (func == NULL) { if (func == NULL) {
char buf[140]; char buf[140];
PyObject *classname = inst->in_class->cl_name; PyObject *classname = inst->in_class->cl_name;
PyObject *mod = PyDict_GetItemString(
inst->in_class->cl_dict, "__module__");
char *cname; char *cname;
if (classname != NULL && PyString_Check(classname)) if (classname != NULL && PyString_Check(classname))
cname = PyString_AsString(classname); cname = PyString_AsString(classname);
else else
cname = "?"; cname = "?";
PyErr_Clear(); PyErr_Clear();
sprintf(buf, "<%.100s instance at %lx>", cname, (long)inst); if (mod == NULL || !PyString_Check(mod))
sprintf(buf, "<?.%.100s instance at %lx>",
cname, (long)inst);
else
sprintf(buf, "<%.50s.%.50s instance at %lx>",
PyString_AsString(mod),
cname, (long)inst);
return PyString_FromString(buf); return PyString_FromString(buf);
} }
res = PyEval_CallObject(func, (PyObject *)NULL); res = PyEval_CallObject(func, (PyObject *)NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment