我有一個C++類,帶有一個成員函數,可以從一個小到大量的參數。讓我們將這些參數命名爲a-f。所有參數都有默認值。作爲我正在開發的python項目的一部分,我想將這個類暴露給python。目前,成員函數看起來是這樣的:Boost :: Python-可能自動從字典轉換 - > std :: map?
class myClass {
public:
// Constructors - set a-f to default values.
void SetParameters(std::map<std::string, double> &);
private:
double a, b, c, d, e, f;
}
void myClass::SetParameters(std::map<std::string, double> const& params) {
// Code to iterate over the map, and set any found key/value pairs to their
// corresponding variable. i.e.- "a" --> 2.0, would set myClass::a to 2.0
}
理想的情況下,在Python,我想做到這一點使用的字典:
>>> A = myModule.myClass();
>>> A.SetParameters({'a': 2.2, 'd': 4.3, b: '9.3'})
通過這種方式,用戶可以在輸入值任何訂單,並輸入其中的任何數量將被覆蓋。任何關於如何在boost :: python中完成的想法?在我看來,我可以通過將地圖輸入更改爲boost :: python對象並使用提取函數來完成此操作。但是,這將需要我改變我的庫的接口(我寧願保留std :: map接口,並且有一些Python版本的中介/自動轉換技術)。思考?
@ aleksey-關鍵字參數方法看起來最適合什麼我想這樣做,但是,我在發佈的代碼中遇到了一些問題,看起來像raw_function只是喜歡指定的函數將輸入作爲元組和字典。是否有類成員函數的單獨類似結構? – MarkD 2011-05-25 02:18:51
哦,我明白了,我想通過使用一個繼承自我試圖包裝的類的包裝類來解決這個問題 – 2011-05-25 02:23:09
另外,args元組中的第一個參數應該是對你的類的引用。你可以省略自變量並從args [0]中提取myClass&。看看是否有效。 – 2011-05-25 02:28:25