[英]boost.python code on module import
当我的C ++库以Python导入时,我需要调用InitGoogleLogging()。 我的C ++库使用Boost.Python。
导入库后如何调用函数?
python中没有真正的“定义”。 导入 .py模块中的所有代码都会在导入时执行 。 恰好是在大多数情况下,放在包文件中的代码是“ definiton”代码,例如class或def 。 实际上,该代码仍然可以执行,因此仅创建您的类和函数定义。 从模块中的根名称空间(缩进)调用函数将导致该函数在模块加载后立即被调用。
只需将它们放入__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.