Cython:不公开部分实现
Posted
技术标签:
【中文标题】Cython:不公开部分实现【英文标题】:Cython: Not exposing parts of the implementation 【发布时间】:2017-06-08 19:08:16 【问题描述】:我正在为 C++ 中的一些代码制作 cython 集成模型,我有以下问题:
我可以选择不公开我的内部实现部分吗?
例如:
myclass.hpp
class MyClass
private:
foo _bar;
public:
do_stuff();
;
我选择故意从 cython 模块中省略 _bar
,因为它在实现内部
myclass.pyx
cdef extern from "myclass.hpp":
cdef cppclass MyClass:
cdef public void do_stuff()
【问题讨论】:
您这样做有没有遇到任何特殊的问题? 我还在尝试编译这个简单的例子,所以我不确定。 cython 文档让我很困惑。 因此,如果您在编译时遇到任何问题,请在您的问题中明确提及这些内容。理想情况下是minimal reproducible example。 我的问题在物理上尽可能明确。 Cython 文档从未明确说明您是否可以不公开部分实现。 【参考方案1】:是的,您可以省略实现细节。
你的 Cython 代码做了两件事
-
它包含“myclass.hpp”,以便 C++ 编译器可以访问必要的实现细节。
它告诉 Cython 你想要使用的特定方法、属性或子类(等)(在你的情况下为
do_stuff
)。不告诉 Cython 方法/详细信息的唯一后果是您无法直接从 Cython 访问它。
【讨论】:
以上是关于Cython:不公开部分实现的主要内容,如果未能解决你的问题,请参考以下文章
使用 cython 向 python 公开一个 c++ 函数