implement object.__format__ with PyObject_Format

This commit is contained in:
Benjamin Peterson 2010-06-05 00:56:46 +00:00
parent 3a2acb5040
commit 039c585805

View file

@ -3413,7 +3413,6 @@ object_format(PyObject *self, PyObject *args)
PyObject *format_spec; PyObject *format_spec;
PyObject *self_as_str = NULL; PyObject *self_as_str = NULL;
PyObject *result = NULL; PyObject *result = NULL;
PyObject *format_meth = NULL;
Py_ssize_t format_len; Py_ssize_t format_len;
if (!PyArg_ParseTuple(args, "O:__format__", &format_spec)) if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
@ -3449,21 +3448,11 @@ object_format(PyObject *self, PyObject *args)
goto done; goto done;
*/ */
} }
return PyObject_Format(self_as_str, format_spec);
/* find the format function */
format_meth = PyObject_GetAttrString(self_as_str,
"__format__");
if (format_meth != NULL) {
/* and call it */
result = PyObject_CallFunctionObjArgs(format_meth,
format_spec,
NULL);
}
} }
done: done:
Py_XDECREF(self_as_str); Py_XDECREF(self_as_str);
Py_XDECREF(format_meth);
return result; return result;
} }