2011-02-28 55 views

回答

5

Python中没有真正的“定义”。您在.py模块中输入的任何代码是执行当您导入它。正好是大部分时间代码放在包文件中的是“定义”代码,如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中平坦化命名空间。

即(这将是__init__.py在AA子目录命名FOO):

from _foo import * 

InitGoogleLogging() 

另一种替代方法是直接从C++包装器模块调用它:

BOOST_PYTHON_MODULE(foo) 
{ 
    InitGoogleLogging(); 

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

由于一个许多。我喜欢第二种解决方案,但我需要了解argv。 boost :: python会给我一种获得argv的方法吗?也许我可以调用sys.argv [0]? – 2011-02-28 05:28:36

+0

你的意思是应用程序的argv?如果你这样做,那么是的。 – 2011-02-28 05:51:56

+0

@aleksey:我知道。我如何从我的C++代码中获取sys.argv [0]? – 2011-02-28 06:35:25