• [转]c++访问python3-实例化类的方法


    转自: http://blog.csdn.net/love_clc/article/details/76653100

     此文是学习笔记,供日后翻阅。
    下面列出C++访问python所需的函数,按调用的先后次序排列。
    提示: 其中实例化类的方法是python3中的,若要使用python2,则用PyInstance_New这个方法。有关此方法网上有很多资料,就不列出了。

    //PyInitialize: 必须首先调用,初始化python运行所需模块。它无参数、无返回值
    void Py_Initialize();

    /*Py_IsInitialized: 检查初始化是否成功
    *返回值: 成功返回true*/
    bool Py_IsInitialized();

    /*PyImport_ImportModule: 加载python模块
    *szModuleName: 模块名称
    *返回值: 成功加载返回模块指针*/
    PyObject *PyImport_ImportModule(const char *szModuleName);

    /*PyModule_GetDict: 获取模块字典
    *pModule: 模块指针
    *返回值: 成功从指定模块获取字典返回字典指针*/
    PyObject *PyModule_GetDict(PyObject *pModule);

    /*PyDict_GetItemString: 从模块字典中获取指定的对象
    *pDict: 被查找的模块字典指针
    *key: 要查找的模块中的函数或类名
    *返回值: 若找到指定的对象,返回指向它的指针;否则返回NULL*/
    PyObject *PyDict_GetItemString(PyObject *pDict, const char *key);

    /*PyInstanceMethod_New: 实例化从模块字典中查找到的类
    *pClass: 从模块字典中找到的类信息指针
    *返回值: 根据类信息指针构造该类的实例,并返回它的指针*/
    PyObject *PyInstanceMethod_New(PyObject *pClass);

    /*PyObject_CallMethod: 调用类方法
    *pInstance: 由PyInstanceMethod_New返回的类实例
    *pMethodName: 被调用的类方法名
    *pFormat: 传递给类方法的参数类型格式字符串
    *...: 传给类方法的参数
    *返回值: 被调用类方法的返回值。若被调用方法无返回值,则本方法返回NULL*/
    PyObject *PyObject_CallMethod(PyObject *pInstance, const char *pMethodName, const char *pFormat, ...);

    /*PyObject_CallFunction: 调用模块中的函数
    *pFunction: 从模块字典中获取的模块函数指针
    *pFormat: 要传给模块函数的参数类型格式化字符串
    *...: 传给模块函数的参数列表
    *返回值: 模块函数的返回值;若模块函数无返回值,该方法返回NULL*/
    PyObject *PyObject_CallFunction(PyObject *pFunction, const char *pFormat, ...);

    /*PyArg_Parse: 从python返回的数据对象中获取指定的数据
    *pArgs: 调用python方法得到的返回值
    *pFormat: 指定获取什么类型数据的格式化字符串
    *...: 存储获取数据的指针*/
    PyArg_Parse(PyObject *pArgs, const char *pFormat, ...);

    //下面这个宏释放python api创建的对象,如模块,模块字典,函数,类和类实例等等
    Py_DECREF(pObject);

    //最后调用此方法释放python模块
    Py_Finalize();

  • 相关阅读:
    初始v4l2(六)-------根据虚拟驱动vivi的使用彻底分析摄像头驱动
    初识v4l2(五)-------v4l2_ioctl浅析
    初识v4l2(四)-------v4l2_open、v4l2_read、v4l2_write浅析
    初识V4L2(三)-------分析vivi.c 虚拟视频驱动
    初识V4l2(二)-------浅析video_register_device
    初识V4L2(一)
    构建根文件系统之根文件系统(三)
    构建根文件系统之构建根文件系统(二)
    构建根文件系统之根文件系统
    vscode在软件内部查看html渲染效果的插件
  • 原文地址:https://www.cnblogs.com/xuyuan77/p/8421567.html
Copyright © 2020-2023  润新知