Py_FindMethod在python3中消失了。我应该用什么呢?

时间:2011-11-10 10:37:08

标签: python python-3.x module porting

我正在尝试将sourceforge上找到的Python的avl模块移植到python3。我设法摆脱了大多数错误,但我没有找到关于如何处理

的明确信息
Py_LOCAL(PyObject *) avl_tree_getattr(avl_tree_Object * self, char *name)
{
    return Py_FindMethod(avl_tree_methods, (PyObject *) self, name);
}

mailing lists有一些建议只是使用PyObject_GenericGetAttr,但我必须承认我不知道python模块的内部结构足以看到我如何在这个特定情况下应用它

任何提示?

1 个答案:

答案 0 :(得分:0)

如你所说, PyObject_GenericGetAttr似乎是解决方案。

在Pascal中,它看起来像:Result := PyObject_GenericGetAttr(obj, PyString_FromString(key))

cf。 https://github.com/pyscripter/python4delphi/commit/da1179cd5bb5dc033f7e02fac90db2b4859c4edd#diff-3e36d1a884559dd32bbdd327290b89abR173

在C语言中,可能类似于:

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