【问题标题】:How to prevent boost::python::extract<float> from accepting int如何防止 boost::python::extract<float> 接受 int
【发布时间】:2010-10-05 07:07:52
【问题描述】:

我正在使用 boost::python::extract 将 boost::python::list 中的项目转换为浮点数。我的问题是 python 中的 int - extract&lt;float&gt; 似乎将 int->float 视为有效转换,但我只想要真正的浮点对象。有没有办法强制 extract 更加保守?

extract<float> value(o);
if (value.check()) {
  // This is true both for floats and ints
  a = value();
}

【问题讨论】:

    标签: python boost-python


    【解决方案1】:

    我很确定您不能告诉extract&lt;float&gt; 不要将整数转换为浮点数。

    你可以做的是查询包装好的PyObject

    const PyObject* pyo = o.ptr();
    if (PyFloat_Check(pyo))
    {
        // True only for floats.
        a = extract<float>(o);
    }
    

    【讨论】:

    • 太好了,这正是我需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多