簡體   English   中英

在C中創建Python擴展類型的實例

[英]Creating Instance of Python Extension Type in C

我正在編寫一個簡單的Vector實現,作為C中的Python擴展模塊,看起來像這樣:

typedef struct {
    PyObject_HEAD
    double x;
    double y;
} Vector;

static PyTypeObject Vector_Type = {
    ...
};

這是創建的實例非常簡單的Vector ,同時從Python的調用,但我需要創建一個Vector相同的擴展模塊中的實例。 我查看了文檔,但找不到清晰的答案。 最好的方法是什么?

最簡單的方法是調用您創建的類型對象,例如使用PyObject_CallFunction -不要讓名稱欺騙您,它允許您調用任何可調用對象, 不僅僅是函數。

如果您沒有引用類型對象的引用,可以方便地將其作為C模塊的static全局變量使用,則可以用各種方式(例如,使用PyObject_GetAttrString從模塊對象中)檢索它。 但是將PyObject*粘貼到static模塊級C變量中可能是最簡單和最方便的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM