2017-07-01 62 views
0

我想從另一個文件夾中導入一個類。在另一個Python腳本,我會做from X import Y with Boost.Python

from Base.Derived import Class

但我無法弄清楚如何使用Boost.Python的做到這一點。該庫提供import.hpp它可以讓你做這樣的事情

object module = import("Base.Derived"); 

但蟒蛇相當於是

import Base.Derived 

的最終目標是獲得一個實例化的Python對象爲基本指針,因此使用Boost.Python是首選。理想情況下,代碼看起來像這樣

object module = some form of "from Base.Derived import Class" 

// Get a C++ pointer of the derived python class. 
object derived = module.attr("Class")(); 
Card* card = extract< Card* >(derived); 

回答

1

「點」符號中的每個名稱都是其父級的屬性。而你的最後一段代碼幾乎是正確的(儘管我懷疑有些與名稱混淆):

boost::python::object Class = boost::python::import("Base.Derived").attr("Class"); 
boost::python::object class_instance = Class(); 
+0

工程很漂亮,謝謝! – Maspe36

相關問題