Проверка типа PyObjects C

Я использую 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;
} 

Извините, если вопрос слишком длинный или слишком много информации. Первый пост и не хотел упускать ничего, что может помочь. Спасибо за любую помощь или идеи, которые вы можете мне дать по этому вопросу.

5
задан greatwolf 18 February 2017 в 01:39
поделиться