0

我想使用 Boost.Python 使 Python 可以使用 boost::gregorian::date。__str__但是,当 Boost 日期类中没有一个函数时,我该如何创建一个像样的函数呢?我想这样写:

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

1 回答 1

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)
    ;
}
于 2013-06-13T14:20:03.363 回答