2013-06-12 65 views
0

我想使用Boost.Python將Python :: boost :: gregorian :: date提供給Python。但是,如果Boost日期類中沒有可用的函數,我該如何創建一個體面的__str__函數?我想這樣寫:使用Boost.Python向Python公開boost :: gregorian :: date

BOOST_PYTHON_MODULE(mymodule) 
{ 
    class_<boost::gregorian::date>("Date") 
     .add_property("year", &boost::gregorian::date::year) 
     .add_property("month", &boost::gregorian::date::month) 
     .def("__str__", ???) 
    ; 
} 

回答

0

經過一番研究,我找到了答案。您也可以爲.def提供靜態函數。只要給它to_iso_extended_string,它就獲得了作爲第一個參數的對象。

BOOST_PYTHON_MODULE(mymodule) 
{ 
    class_<boost::gregorian::date>("Date") 
     .add_property("year", &boost::gregorian::date::year) 
     .add_property("month", &boost::gregorian::date::month) 
     .def("__str__", &to_iso_extended_string) 
    ; 
} 
相關問題