Как получить доступ к связанным классам из объекта `py::module`?C++

Программы на C++. Форум разработчиков
Anonymous
Как получить доступ к связанным классам из объекта `py::module`?

Сообщение Anonymous »

При использовании pybind11 для предоставления некоторого кода C++ есть ли способ доступа к определенным классам (py::class) из объекта модуля (py::module)? Я понимаю, что могу использовать attr непосредственно из связанного класса, но могу ли я сделать то же самое для классов из модуля?
#include
#include
#include

class MyClass {
public:
MyClass() = default;
// ...
};

class MyOtherClass {
public:
MyOtherClass() = default;
// ...
MyClass val;
};

// -------------------------------------------------------------------------

template < typename T >
py::class_< T > bind(py::module& module, const char* name);

template < >
py::class_< MyClass > bind(py::module& module, const char* name) {
return py::class_< MyClass >(module, name)
.def(py::init< >(), "Constructs a new instance")
// ...
.def("__repr__", [](const MyClass& obj) { return "something"; });
}

template < >
py::class_< MyOtherClass > bind(py::module& module, const char* name) {
return py::class_< mmyClas >(module, name)
.def(py::init< >(), "Constructs a new instance")
// ...
.def("__repr__", [](const MyOtherClass& obj) { return module.class("MyClass").attr("__repr__")(obj.val); }); // (module, "MyClass");
bind< MyOtherClass >(module, "MyOtherClass");
// ...

}


Подробнее здесь: https://stackoverflow.com/questions/781 ... ule-object

Вернуться в «C++»