我使用Boost Python來使C++和Python一起運行,我有一個如下所示的代碼,創建一個python對象的實例並調用它的一個成員函數。查找成員函數是否存在於Boost python :: object中
bp::object myInstance;
// ... myInstance is initialized
bp::object fun = myInstance.attr("myfunction");
fun();
我想在調用它之前檢查成員函數是否存在。如果它不存在,我不想打電話。
問題是:即使該函數不存在,對myInstance.attr(「myfunction」)的調用也會成功。因此,測試當前代碼中是否存在函數的唯一方法是嘗試調用它並捕獲異常。
有什麼辦法來檢查函數是否存在,而不涉及異常或調用函數?
'// ...將myInstance是initialized'在C++中初始化一個Python對象是最糟糕的一個'boost :: python'文檔化的部分,在這裏你把它放棄了! – caps