使用Python Ctypes时内部类无法访问其他内部类定义的问题
问题解决办法
出错原因
你在定义A的内部类C时,A这个类还没完全初始化完成,此时用A.B去引用会报错——因为Python还没创建好完整的A类,自然找不到A.B。在A的内部作用域里,直接写B就能访问到同级的内部类B,不需要加A前缀。
修正后的代码
from ctypes import Structure class A(Structure): class B(Structure): _fields_ = [] class C(Structure): _fields_ = [("b", B)] # 直接用B即可,无需写A.B
额外说明
C语言里嵌套在A中的struct B,在Python ctypes中对应成内部类B后,同一个A内部作用域里的同级类C,直接用B就能正确映射C语言的结构体嵌套关系,完全符合两边的语法规则。
内容的提问来源于stack exchange,提问作者HalfOfRain
相关产品推荐
相关产品推荐

