我正在使用PyObject
将部分python
代码嵌入其中C++
。我找到了适用于创建 python 实例的解决python 2.7
方案PyInstance_New
。但它不适用于看起来像这样的新型 python 类。
class B(object):
def __init__(self, name):
self.name = name
def print_name(lastName):
print self.name + " " + lastName
在我的旧代码(python 2.7
)中,类定义不继承自对象类,我创建实例来调用print_name
这样的方法。PS 文件名为 A.py。
PyObject *import, *attr, *instance, *methodcall, *arg, *tuple;
arg = PyString_FromString("hello");
tuple = PyTuple_Pack(1, arg);
import = PyImport_ImportModule("A");
attr = PyObject_GetAttrString(import, "B");
instance = PyInstance_New(attr, arg, NULL);
methodcall = PyObject_CallMethod(instance, (char *) "print_name", (char *) "(s)", (char *) "Bill");
但是上面的代码不再起作用了,因为在 newpython 3.x
中,type(class)
returnsobject
而不是instance
. 现在,我收到了这个错误。
内部函数的错误参数。
任何帮助表示赞赏。谢谢你。