首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ctypes AutoComplete

Ctypes AutoComplete
EN

Stack Overflow用户
提问于 2017-03-03 18:44:51
回答 1查看 454关注 0票数 0

Python IDE(any) Intellisense如何在设计时发现结构成员?

代码语言:javascript
复制
    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

这在运行时是可以的,但是有没有办法让智能感知在键入" my_structure .“时检测到my_structure中有一个member1?

正是出于这个目的,我创建了一个包含相同成员名称的python包装器类,并在需要时对它们进行均衡/绑定。然而,我觉得这是一种肮脏的方式。

我将发布一个python SDK,如果ctypes结构被编译成字节码(没有源代码),那么如果没有提供额外的文档,用户将不会知道结构的成员是什么。这将使开发人员和用户的工作变得更加复杂。

EN

回答 1

Stack Overflow用户

发布于 2017-03-03 20:52:32

我从@Alfe响应中了解到,这取决于IDE。Python IDLE在设计时查找结构的成员。PyCharm不能。

我用下面的方式使用我的结构,看起来工作得很好。通过这种方式,还可以使用python类特性扩展ctypes.structure。

代码语言:javascript
复制
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()基类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42576778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档