static PyObject* int_repr(PyIntObject *v)
{
……
//add by Robert
If(PyInt_AsLong(v) == -999) {
PyObject* str = PyString_FromString("i am in int_repr");
PyObject* out = PySys_GetObject("stdout");
if(out != NULL) {
PyObject_Print(str, stdout, 0);
printf("\n");
}
}
……
}
作者在第一章的“修改源码”,在这个函数中用PyObject* out = PySys_GetObject("stdout");
然而下面的使用并没有用到out这个变量,而是直接 PyObject_Print(str, stdout, 0);
我测试了下,在IDLE中的输出还是原样,如果我把 PyObject_Print(str, stdout, 0);这里的stdout换成上面定义的out后就出错了,有没有大侠知道原因呀?