Onde está armazenado o valor int de uma instância int em Python?
oint
digitar python oferece dois atributos chamadosnumerator
ereal
que tenham o mesmo conteúdo que__int__()
.
Como todos esses 3 valores retornam o mesmo atributo interno, eu achoreal
é uma propriedade como:
@property
def real(self):
return self.__int
No entanto, não consigo encontrar este diretório de propriedade ocultodir
oua = int(); a._int__<tab>
no IPython.
Então eu olhei para oCódigo fonte e encontrou o seguinte:
static PyGetSetDef int_getset[] = {
{"real",
(getter)int_int, (setter)NULL,
"the real part of a complex number",
NULL},
{"imag",
(getter)int_get0, (setter)NULL,
"the imaginary part of a complex number",
NULL},
{"numerator",
(getter)int_int, (setter)NULL,
"the numerator of a rational number in lowest terms",
NULL},
{"denominator",
(getter)int_get1, (setter)NULL,
"the denominator of a rational number in lowest terms",
NULL},
{NULL} /* Sentinel */
};
E isto:
static PyObject *
int_int(PyIntObject *v)
{
if (PyInt_CheckExact(v))
Py_INCREF(v);
else
v = (PyIntObject *)PyInt_FromLong(v->ob_ival);
return (PyObject *)v;
}
Mas isso é o mais longe que posso ir sozinha.
Onde o valor real de um número inteiro é armazenado dentro de uma instância de número inteiro?
A principal razão para esta pergunta é que eu quero estender ofloat
digite com umMyFloat
onde gostaria de me referir ao valor da instância.