我正在編寫一個圍繞getifaddrs()
的Python包裝。該接口使用struct ifaddrs
類型,其第一個字段是另一個指針struct ifaddrs
。如何爲定義的結構創建一個POINTER?
struct ifaddrs {
struct ifaddrs *ifa_next; /* Pointer to the next structure. */
... /* SNIP!!11 */
};
然而,在Python表示此:
class struct_ifaddrs(Structure):
_fields_ = [
('ifa_next', POINTER(struct_ifaddrs)),]
給出此錯誤:直到類定義完成
[email protected]:~/src/pydlnadms$ ./getifaddrs.py
Traceback (most recent call last):
File "./getifaddrs.py", line 58, in <module>
class struct_ifaddrs(Structure):
File "./getifaddrs.py", line 61, in struct_ifaddrs
('ifa_next', POINTER(struct_ifaddrs)),
NameError: name 'struct_ifaddrs' is not defined
struct_ifaddrs
將不被綁定到當前範圍。當然,作爲一個指針類型,顯然在聲明中不需要struct_ifaddrs
的定義,就像在C中一樣,但是這個類型需要在以後的使用中被解除。我該如何繼續?
是否可行的是稍微退一步實現包裝不太字面?我在想,讓你的包裝類看起來更像一個數組或者'ifaddrs'的列表,而沒有任何'next'的概念。 – sarnold 2011-03-12 09:10:21