基本上,我用Python封裝了一個C API(使用CFFI(很棒))。在Python中使用其名稱(一個Python字符串)在一個枚舉中獲取一個C變量值
我有C API在一個枚舉:
typedef enum
{
enum1 = value1;
enum2 = value2;
...
} enumSomething;
在Python,我接收可變這是在這個枚舉的名稱,作爲字符串:"enum1"
。我想獲得value1
。
使用CFFI
,你可以包裝枚舉並輕鬆訪問其成員(here is an example)。我的問題在於,我有代表變量名稱的字符串,而不是變量本身。
因此,cwrapper.c."enum1"
將不起作用(cwrapper
是包裝的模塊的名稱,c
包裝庫時由ffi.dlopen(libname)
返回的名稱)。
我可以做一本字典,將變量名映射爲一個字符串到實型變量,如:
enum = { "enum1" : cwrapper.c.enum1, "enum2" : cwrapper.c.enum2, ... }
但在這一點上,我會更好地重寫枚舉Python字典。
我知道我也可以使用正則表達式來讀取C文件,但我認爲還有更好的方式來處理,我沒有想到。任何想法?
我其實是想指出的是,它不會是有效的語法。但是,我不知道getattr。謝謝,它的工作原理! – DRz
@DRz看到我的更新版本 –
爲什麼使用這種方式更清潔,而不僅僅是getattr? – DRz