gpt4 book ai didi

python - pybind11 - 包装重载赋值运算符?

转载 作者:行者123 更新时间:2023-12-02 10:34:52 26 4
gpt4 key购买 nike

我正在使用 pybind11 将 C++ 函数公开给 Python 接口(interface)。我想包装重载的赋值运算符,但不知道如何包装。提供的文档和示例并没有真正涵盖它,至少从我所看到的来看是这样。

这是我正在尝试做的事情的简化版本:

class Num{
public:
Num(const double& num) : m_val(num), m_type(Num::Type::e_none){}

Num& operator=(const double& rhs){m_val = rhs;}

private:
double m_val;
};

这是包装:

PYBIND11_MODULE(demo, m){
py::class_<Num>(m, "Num")
.def(py::init<const double&>())
// Overloaded assignment operator binding ?
;
}

我主要关心的是在将 Num 分配给 float 时保留它的数据类型。例如:

>>> m = Num(4.5)
>>> type(m)
<class 'demo.Num'>
>>> m = 5.5
>>> type(m)
<class 'float'>

这是我第一次使用 C++ 扩展和绑定(bind),所以任何关于我应该做什么的见解都会很棒!

最佳答案

.def("assign", &Num::operator=);

请引用https://github.com/pybind/pybind11/issues/250了解更多详情。

关于python - pybind11 - 包装重载赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60745723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com