4

検索して検索しましたが、必要なことを実行する例が見つかりませんでした。
Pythonで「列挙型」を表現するには どうすればよいですか? ここではSOですが、ctypes.Structureはカバーしていません。SOの ctypes.Structure で Using enumsも見つけまし たが、よく知らないポインターが含まれています。

Python ファイルの ctypes.Structure で使用する必要がある typedef 列挙型を含むヘッダー ファイルがあります。

C++ ヘッダー ファイル:

typedef enum {

        ID_UNUSED,
        ID_DEVICE_NAME,
        ID_SCSI,
        ID_DEVICE_NUM,
} id_type_et; 

Pythonファイル(私が現在行っている方法):

class IdTypeEt(ctypes.Structure):

        _pack_ = 1
        _fields_ = [ ("ID_UNUSED", ctypes.c_int32),
            ("ID_DEVICE_NAME", ctypes.c_char*64),
            ("ID_SCSI", ctypes.c_int32),
            ("ID_DEVICE_NUM", ctypes.c_int32) ]

アドバイスをいただければ幸いです。シンプルであればあるほど良い。

4

1 に答える 1

5

Anenumは構造体ではなく、定義済みの一連の値 (列挙子定数) を持つ整数型です。で表現しても意味がありませんctypes.Structure。あなたはこのようなものを探しています:

from ctypes import c_int

id_type_et = c_int
ID_UNUSED = id_type_et(0)
ID_DEVICE_NAME = id_type_et(1)
ID_SCSI = id_type_et(2)
ID_DEVICE_NUM = id_type_et(3)
于 2013-05-17T17:12:05.680 に答える