Python IDE(任何)Intellisense如何在设计时发现结构成员?
class MY_STRUCTURE(ctypes.Structure):
_fields_ = [("member1", c_int),
("member2", c_int)]
#Any idea declare the fields like self.member1 here inside the structure?
my_structure = MY_STRUCTURE()
my_structure.member1 = 0
这是运行时的O.K,但是在输入“my_structure”时,intellisense有任何方法可以检测到my_structure中有一个member1。 ?
为此,我创建了一个python包装类,它由相同的成员名组成,并在需要时均衡/绑定它们。但是我觉得这是一种肮脏的方式。
我将分发一个python SDK,如果ctypes结构被编译为字节码(没有源代码),那么如果没有提供额外的文档,那么用户不会知道结构的成员是什么。这将使开发人员和用户工作更加复杂。
答案 0 :(得分:0)
我从@Alfe响应中了解到这取决于IDE。 Python IDLE在设计时找到结构的成员。 PyCharm不能。
我按照以下方式使用我的结构,看起来工作正常。通过这种方式,ctypes.structure也可以使用python类功能进行扩展。
import ctypes
from ctypes import *
class MY_STRUCTURE(ctypes.Structure):
def __init__(self):
self.member1 = 1
self.member2 = 2
super().__init__(member1=self.member1,
member2=self.member2)
_fields_ = [("member1", c_int),
("member2", c_int)]
这里的关键是调用super()基类。