Erstellen Sie in Boost.Python ein Modul mit einer Struktur, die dem unten gezeigten Python-Modul (möglicherweise einem Paket, um genau zu sein) entspricht.
mainmodule/
├ __init__.py
├ submodule1/
│ ├ __init__.py
│ └ hoge.py
├ submodule2/
│ ├ __init__.py
│ └ foo.py
:
:
Import ist
import mainmodule
from mainmodule.submodule1 import hogehoge # mainmodule/submodule1/hoge.hogehoge ist in py definiert
from mainmodule import submodule2
Es wird so sein.
Dieser Artikel beschreibt eine ziemlich komplizierte Verwendung von Boost.Python. Daher ist es für Personen gedacht, die Boost.Python mindestens einmal verwendet haben.
Wenn Sie Boost.Python nicht verwendet haben, aber daran interessiert sind, klicken Sie hier letboost :: python --Kmonos.net Bitte vorbereiten.
Ich finde oft einen Weg, Klassen zu verschachteln, aber ich konnte keine Verschachtelung von Modulen finden, machen Sie sich also eine Notiz. Originalseite Pakete in Python-Erweiterungsmodulen
Ich denke, es ist schneller, den Quellcode zu sehen, also ist es plötzlich der Quellcode.
Deklarieren Sie das äußerste Modul.
BOOST_PYTHON_MODULE(mainmodule) {
using namespace boost::python;
object package = scope();
package.attr("__path__") = "mainmodule";
export_submodule1();
export_submodule2();
:
}
Eine Funktion, die ein Submodul deklariert
void export_submodule1() {
using namespace boost::python;
// from mainmodule.submodule1 Ermöglicht den Aufruf in Form eines Imports
object module(handle<>(bp::borrowed(PyImport_AddModule("mainmodule.submodule1"))));
//Vom Hauptmodul-Import kann Submodul1 verwendet werden
scope().attr("submodule1") = module;
//Legen Sie den Bereich fest
scope scope1 = module;
//Definieren Sie verschiedene notwendige Funktionen und Klassen
def("hogehoge", &hogehoge);
:
}
Es kann wie ein normales Python-Modul verwendet werden, daher gibt es keine spezifische Erklärung. Der Import erfolgt wie am Anfang gezeigt.