2009-03-02 24 views
30

我已經在C++中實現了一個類。我想用Python來使用它。 請逐步建議並詳細說明每一步。 財產以後這樣的...如何在Python中使用C++類?

class Test{ 
    private: 
     int n; 
    public: 
     Test(int k){ 
      n=k; 
     } 
     void setInt(int k){ 
      n = k; 
     } 
     int getInt(){ 
      return n; 
     } 
}; 

現在,在Python

>>> T1 = Test(12) 
>>> T1.getInt() 
12 
>>> T1.setInt(32) 
>>> T1.getInt() 
32 

請suggest.How我能做到這一點? 注:我想知道手動方式來做到這一點。我不想要任何第三方庫依賴。

+1

只是好奇 - 爲什麼你想避免第三方? – 2009-03-02 15:07:04

回答

23

調查Boost.Python。這是一個用C++編寫python模塊的庫。

另請參閱SWIG,它還可以處理用於其他腳本語言的模塊。我以前用它來爲我的類編寫模塊,並在python中使用它們。很棒。

你可以手動使用Python/C API,自己編寫接口。這是相當低級的,但是您將獲得關於Python如何在場景後面工作的更多知識(當您使用SWIG時,您將需要它)。

+12

不符合「我不想要任何第三方庫依賴」要求。 – Constantin 2009-03-02 14:58:47

+2

無論如何,您將需要python庫。它當然包括python/c api。 – 2009-03-02 15:02:13

9

ctypes很好。它非常易於使用,並且它是Python的標準配置。不幸的是,它只能與擁有C風格界面的共享庫(Unix)或DLL(Windows)交談,這意味着您無法直接與C++對象進行交互。但是你可以使用句柄系統,其中句柄指的是一個特定的對象。

>>> getInt(h) 
12 

我認爲這很簡單,易於理解,並且不需要額外的庫。