2013-12-08 11 views
0

Я хочу сделать что-то вдоль линийИмя переменной передается в качестве аргумента

static PyObject* printArgs(PyObject* self, PyObject* args) { 
    PyObject * oarg1 = NULL; 
    PyArg_ParseTuple(args,"O",&oarg1); 
    return -- magic -- 
} 

Такое, что вызов modulename.printArgs (а) возвращает «а».

Возможно ли это? Лучшее, что я мог придумать, - это просмотр locals() для переменной, указывающей на то, что я получил в args, но если есть более одного имени для значения, я мог бы получить неправильное имя.

ответ

1

Невозможно. Ни в коем случае не гарантируется, что параметр имеет даже имя, это может быть анонимное выражение. Таким образом, это не является ограничением API, это фундаментальная проблема с тем, что вы пытаетесь достичь. Можете ли вы дать некоторую мотивацию для функции printArgs?

+0

Я не против получения нулевого указателя, если он анонимный. Я добавляю интерпретатор к приложению C++, и я хочу идентифицировать объекты по их именам в интерпретаторе python. –

+0

Тогда вы можете просто предположить, что каждый параметр является анонимным (потому что в некотором роде он есть) и сразу возвращает нулевой указатель. :-) – mornfall

+0

В зависимости от того, какие объекты вы хотите идентифицировать, их регистрация (через конструкторы, например) звучит как гораздо лучший план. – mornfall

Смежные вопросы