5 Stimmen

Benötigt Boost.Python Bindungscode für andere Boost-Bibliotheken?

Ich habe eine Klasse, die von der boost::statechart-Bibliothek erbt. Ich muss diese Klasse in einem Python-Skript verwenden und frage mich, ob ich Wrapper-Codes (.def s) für die gesamte boost::statechart-Bibliothek schreiben muss, nur weil meine Klasse von dieser geerbt hat? Oder wird der boost.python keine Wrapper-Codes benötigen, um die Definitionen zu sehen (es behandelt automatisch andere boost-Bibliotheken, um sie in Python aufzurufen)?

0voto

Tamás Szelei Punkte 22099

Boost.Python hat keine spezielle Behandlung für Boost-Klassen. Wenn Sie verwenden möchten geerbte Funktionen (Boost-Klasse oder nicht), müssen Sie sie in Python freigeben, wie Sie es mit Ihrem eigenen Code tun würden.

Wenn Sie nicht die Basisklassenfunktionen in Ihrem Skript verwenden möchten, müssen Sie außer dem Binden Ihres eigenen Codes nichts tun.

Sie haben zwei Möglichkeiten, wenn Sie (einen Teil der) Basisklassen-Schnittstelle in Python verfügbar haben müssen:

  • Sie binden die Basisklasse separat und setzen sie als Basis für Ihre Klasse frei. Dies ist die "vollständigste" Lösung (so vollständig wie Sie es machen - Sie können wählen, die Anzahl der freigegebenen Funktionen zu begrenzen).
  • Sie binden die Basisklasse nicht. Python muss nichts über die Vererbungsbeziehung wissen. Sie können einfach die Funktionen binden, die Sie freigeben möchten, da alle öffentlichen Funktionen auch Mitglieder der abgeleiteten Klasse sind. Dies ist einfacher, wenn Sie nur einige der Basisklassenfunktionalitäten verwenden möchten, die von Python aus nutzbar sein sollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X