4
假設我定義爲這樣的結構:如何初始化從字典一個struct在用Cython
cdef extern from "blah.h":
struct my_struct:
int a
int b
我需要能夠轉換dict
爲my_struct
,而不承擔my_struct的領域的知識。換句話說,我需要以下的轉換髮生:
def do_something(dict_arg):
cdef my_struct s = dict_arg
do_somthing_with_s(s)
的問題是,用Cython不會做到這一點:http://docs.cython.org/src/userguide/language_basics.html#automatic-type-conversions
當然,如果我有對my_struct
字段的名稱的知識,我可以做到這一點:
def do_something(dict_arg):
cdef my_struct s = my_struct(a=dict_arg['a'], b=dict_arg['b'])
do_somthing_with_s(s)
這樣做崩潰用Cython編譯:
def do_something(dict_arg):
cdef my_struct s = my_struct(**dict_arg)
do_somthing_with_s(s)
我不知道字段名稱的原因是因爲代碼是自動生成的,我不想做一個醜陋的黑客來處理這種情況。
如何使用Cython從Python字典中初始化結構?
它是否必須是名稱?你可以按順序做,而是使用聯合(具有已知長度的數組)? – 2011-04-15 06:59:09