[英]How do I get *the* PyObject* associated with the C++ object in SWIG?
我能夠使用SWIG_NewPointerObj傳遞一個C ++對象到Python,但它不是的PyObject *,所以我不能在Python正確地使用它。
我的問題是 :有沒有辦法在C ++中獲取從Python創建的C ++對象的 PyObject *?
每個C ++對象沒有唯一的PyObject
。 例如,如果包裝以下內容:
struct foo {};
struct foo *test() {
static struct foo inst;
return &inst;
}
Python中對test()
每次調用都會返回一個新的PyObject
-SWIG無法輕松地知道它們是否相同。
返回的PyObject
是瘦包裝器,即C ++對象周圍沒有本地狀態的代理。 從Python的角度來看,這些外觀和行為都類似於同一對象,因為它們將所有內容都委托給C ++對象。
如果您想擁有一個 PyObject
,可以采取一些方法,但是總的來說,這不是一個好主意,因為您對該對象所做的任何更改都不會從其他PyObject
看到,即使它們引用了相同的C ++。賓語。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.