3
[既然問這個問題,我發現:http://www.cs.unc.edu/~gb/blog/2007/02/11/ctypes-tricks/這給出了很好的答案。]如何爲所有ctype結構類設置__str__方法?
我只是寫了__str__
方法爲CTYPE生成的結構類「富」這樣的:
def foo_to_str(self):
s = []
for i in foo._fields_:
s.append('{}: {}'.format(i[0], foo.__getattribute__(self, i[0])))
return '\n'.join(s)
foo.__str__ = foo_to_str
但是對於爲任何Structure類生成__str__
方法,這是一種相當自然的方式。我如何直接將此方法添加到Structure類,以便由ctypes生成的所有Structure類獲取它?
(我用的是h2xml和xml2py腳本自動生成ctypes的代碼,這提供了沒有明顯的方式來改變類輸出的名字,於是乾脆繼承結構,聯盟&角並加入我的__str__
方法有將涉及後處理xml2py的輸出。)
一個邪惡的黑客將創建一個名爲`ctypes.py`在同一目錄`xml2py`輸出文件,從現實`ctypes`模塊中導入的一切,覆蓋`結構`用你自己的版本。但不要在這一個引用我... – 2011-01-10 00:38:07