Python3中没有Py_FindMethod,应该用什么代替?

6 投票
1 回答
1521 浏览
提问于 2025-04-17 06:02

我正在尝试把在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);
}

该怎么处理这些内容,我没有找到明确的信息。有一些建议在邮件列表上提到可以直接使用PyObject_GenericGetAttr,但我必须承认,我对Python模块的内部工作了解得不够,无法看出在这个特定情况下该如何应用。

有没有什么提示?

1 个回答

0

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

在 Pascal 语言中,它看起来像这样: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))`

撰写回答