Kullanım PyObject_Repr
const char*
olarak kullanabilirsiniz yapabilirsiniz ve genellikle gerektiği (char *
almak için PyString_AsString
çağrı sonra (str
taklit etmek) ya da PyObject_Str
(Python'un repr
fonksiyonunu taklit etmek) ve, örneğin:
PyObject* objectsRepresentation = PyObject_Repr(yourObject);
const char* s = PyString_AsString(objectsRepresentation);
Bu yöntem herhangi PyObject
için Tamam sen yourObject
bir Pyth kesinlikle eminseniz. dize değil, başka bir şey gibi örneğin bir takım, ilk satır atlayıp sadece yapabilirsiniz:
static void reprint(PyObject *obj) {
PyObject* repr = PyObject_Repr(obj);
PyObject* str = PyUnicode_AsEncodedString(repr, "utf-8", "~E~");
const char *bytes = PyBytes_AS_STRING(str);
printf("REPR: %s\n", bytes);
Py_XDECREF(repr);
Py_XDECREF(str);
}
Python 3 için PyBytes_AsString (yourObject) çalışıyorum ve TypeError alıyorum: beklenen bytes, str bulundu –
Hatta benim yanıtımda PyBytes_AsString bahsetmedim. Cevabımda önerdiğim şeyi denediniz mi? – piokuc
Py3.x'te çalıştı. PyString PyBytes ile değiştirildi ancak aynı işlevde değil. Ben kullanarak sona erdi: PyUnicode_AsUTF8 (objectsRepresentation) –