Use _PyObject_CallMethodIdObjArgs() in _io

Issue #28915: Replace _PyObject_CallMethodId() with
_PyObject_CallMethodIdObjArgs() when the format string was only made of "O"
formats, PyObject* arguments.

_PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and
doesn't have to parse a format string.
diff --git a/Modules/_io/winconsoleio.c b/Modules/_io/winconsoleio.c
index 7b00a9e..d8e4339 100644
--- a/Modules/_io/winconsoleio.c
+++ b/Modules/_io/winconsoleio.c
@@ -85,7 +85,7 @@
         Py_CLEAR(decoded);
         return '\0';
     }
-    decoded_upper = PyObject_CallMethod(decoded, "upper", "");
+    decoded_upper = PyObject_CallMethod(decoded, "upper", NULL);
     Py_CLEAR(decoded);
     if (!decoded_upper) {
         PyErr_Clear();
@@ -181,8 +181,8 @@
     PyObject *exc, *val, *tb;
     int rc;
     _Py_IDENTIFIER(close);
-    res = _PyObject_CallMethodId((PyObject*)&PyRawIOBase_Type,
-                                 &PyId_close, "O", self);
+    res = _PyObject_CallMethodIdObjArgs((PyObject*)&PyRawIOBase_Type,
+                                        &PyId_close, self, NULL);
     if (!self->closehandle) {
         self->handle = INVALID_HANDLE_VALUE;
         return res;