Py_FindMethod ушел в python3. Что я должен использовать вместо этого? - PullRequest
6 голосов
/ 10 ноября 2011

Я пытаюсь перенести модуль avl для Python, который я нашел на sourceforge , на python3.Мне удалось избавиться от большинства ошибок, но я не нашел четкой информации о том, что делать с

Py_LOCAL(PyObject *) avl_tree_getattr(avl_tree_Object * self, char *name)
{
    return Py_FindMethod(avl_tree_methods, (PyObject *) self, name);
}

. В списках рассылки есть несколько советов по использованию * 1008.* вместо этого, но я должен признаться, что я недостаточно хорошо знаком с внутренними элементами модулей python, чтобы понять, как я могу применить его в этом конкретном случае.

Любой намек?

1 Ответ

0 голосов
/ 20 декабря 2018

как ты сказал, PyObject_GenericGetAttr кажется решением.

В Паскале это выглядит так: Result := PyObject_GenericGetAttr(obj, PyString_FromString(key))

ср. https://github.com/pyscripter/python4delphi/commit/da1179cd5bb5dc033f7e02fac90db2b4859c4edd#diff-3e36d1a884559dd32bbdd327290b89abR173

В C это может быть что-то вроде:

`return PyObject_GenericGetAttr((PyObject *) self, PyString_FromString(name))`
...