我想使用boost .Python使boost::gregorian::date对Python可用。但是,当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__", ???)
;
}
经过一番研究,我找到了答案。您也可以为.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)
;
}