mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-20092. Use __index__ in constructors of int, float and complex. (GH-13108)
This commit is contained in:
parent
1a4d9ffa1a
commit
bdbad71b9d
15 changed files with 181 additions and 23 deletions
|
@ -246,6 +246,15 @@ PyFloat_AsDouble(PyObject *op)
|
|||
|
||||
nb = Py_TYPE(op)->tp_as_number;
|
||||
if (nb == NULL || nb->nb_float == NULL) {
|
||||
if (nb && nb->nb_index) {
|
||||
PyObject *res = PyNumber_Index(op);
|
||||
if (!res) {
|
||||
return -1;
|
||||
}
|
||||
double val = PyLong_AsDouble(res);
|
||||
Py_DECREF(res);
|
||||
return val;
|
||||
}
|
||||
PyErr_Format(PyExc_TypeError, "must be real number, not %.50s",
|
||||
op->ob_type->tp_name);
|
||||
return -1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue