我正在玩一些 ctypes 来按摩我写到 Python 中的一些 C 代码。C 代码严重依赖结构和联合,目前,Python 中的快速解决方案是通过 ctypes 对它们进行子类化:
即,由此:
struct foo {
uint32_t a;
uint32_t b;
uint16_t c;
uint16_t d;
};
对此:
from ctypes import *
class Foo(Structure):
_fields_ = [("a", c_uint),
("b", c_uint),
("c", c_ushort),
("d", c_ushort)]
除非,如果我将__repr__()
定义扔到 Python 类中,然后repr()
在实例上使用,我得到的只是<class 'Foo'>
(或类似的东西,在这里回忆一下)。
所以我想知道是否有一种方法可以利用repr()
并尝试在 Python 和 C 之间实现两全其美,或者我是否应该查看元类并使用该struct
库将字节打包/解包到适当的 Python 类中。
想法?