Я использую Python 3.2 и C ++.
Мне нужно узнать, какой тип C в настоящее время хранится в PyObject . Я проверил документацию и погуглил, и, кажется, больше никому не нужно было этого делать.
Итак, у меня есть PyObject, и я пытаюсь извлечь значение C. У меня есть список функций, необходимых для извлечения значения из объекта, но в первую очередь мне нужно знать, что хранится в самом объекте, чтобы вызывать правильную функцию.
На всякий случай это помогает понять, что это какой-то пример кода того, что я пытаюсь сделать.
//Variable is a custom variant type to allow for generic functionality.
Variable ExtractArgument( PyObject * arg )
{
Variable value;
PyObject* result;
//now here is the problem, I need to know which Python function to call in order to
//extract the correct type;
value = PyLong_FromLong( arg );
//or
value = PyFloat_FromDouble( arg )
//ect.
return value;
}
Надеюсь, у меня получится что-то похожее на это
Variable ExtractArgument( PyObject * arg )
{
Variable value;
PyObject* result;
//PyType is not the actual variable to that holds the type_macro, GetType should be
//replaced by the function I am trying to find
PyType type = GetType( arg );
switch( type )
{
case T_INT: value = static_cast<int>(PyLong_FromLong( arg ));
break;
case T_FLOAT: value = static_cast<float>(PyFloat_FromDouble( arg ));
break;
case T_DOUBLE: value = PyDouble_FromDouble( arg );
break;
//ect.
}
return value;
}
Извините, если вопрос слишком длинный или слишком много информации. Первый пост и не хотел упускать ничего, что может помочь. Спасибо за любую помощь или идеи, которые вы можете мне дать по этому вопросу.