繁体   English   中英

模块导入时的boost.python代码

[英]boost.python code on module import

当我的C ++库以Python导入时,我需要调用InitGoogleLogging()。 我的C ++库使用Boost.Python。

导入库后如何调用函数?

python中没有真正的“定义”。 导入 .py模块中的所有代码都会在导入执行 恰好是在大多数情况下,放在包文件中的代码是“ definiton”代码,例如classdef 实际上,该代码仍然可以执行,因此仅创建您的类和函数定义。 从模块中的根名称空间(缩进)调用函数将导致该函数在模块加载后立即被调用。

只需将它们放入__init__.py。 请参阅http://www.boost.org/doc/libs/1_45_0/libs/python/doc/tutorial/doc/html/python/techniques.html#python.extending_wrapped_objects_in_python ,其中涉及使用别名导出软件包,然后导出在init .py中扁平化您的名称空间。

即(这将是名为foo的子目录中的__init__.py ):

from _foo import *

InitGoogleLogging()

另一种选择是直接从C ++包装器模块调用它:

BOOST_PYTHON_MODULE(foo)
{
    InitGoogleLogging();

    class_<Foo>("Foo")
        .def("bar", &bar)
    ;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM