C++类有一个方法:
class Bar {
public:
enum Status {
...
};
void setStatus(Status s);
Status getStatus() const;
...
};
类包含在模块foo
中。在
SIP使用它自己的枚举类型,但是出于一些原因,我希望使用标准库中的python3.4enum。在
我看不到有任何机会从pythoncapi访问Python定义的类,所以我决定在__init__.py
中修补包装好的类。主要原因是我想在C/C++ +SIP中做脏的低级工作,并用Python来抛光类(比如用错误的消息添加参数验证)。在
Python__init__.py
部分如下(或多或少):
Bar.status
将接受并返回nice,pythonicBar.Status
枚举。在
预期结果如下:
class Bar(object):
class Status(IntEnum):
...
...
我想知道这种方法是否有什么问题,尤其是在导入时修补对象。在
我用其他似乎没问题的方法解决了这个问题。在
让我们考虑一个C++库,包含两个类:
包装器库包含包
libfoo
(用pythoncapi创建)和pythonic包foo
(用普通Python创建)。我们不直接访问libfoo
包,而是导入foo
。在包
foo
的__init__.py
:现在,当我在消息来源的任何地方这样做:
^{pr2}$这样,我可以用Python API糖来代替非Pythic C++类。在
相关问题 更多 >
编程相关推荐