使用Boost.Python将boost :: gregorian :: date暴露给Python

时间:2013-06-12 14:28:25

标签: boost-python boost-date-time

我想使用Boost.Python为Python提供boost :: gregorian :: date。但是,当Boost日期类中没有一个函数时,如何创建一个合适的__str__函数?我想这样写:

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__", ???)
    ;
}

1 个答案:

答案 0 :(得分: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)
    ;
}