_SimpleCData
は_CData
のサブクラスですので、
そのメソッドと属性を継承しています。
インスタンスはただ一つの属性を持ちます:
value
属性をctypesインスタンスから取り出したとき、
たいていは新しいオブジェクトがその都度返されます。ctypes
は
元のオブジェクトを戻すことはしません。常に新しいオブジェクトが
作られます。同じことはすべての他のctypesオブジェクトインスタンスに
対しても当てはまります。
基本データ型は、外部関数呼び出しの結果として返されたときや、 例えば構造体のフィールドメンバーや配列要素を取り出すときに、 ネイティブのPython型へ透過的に変換されます。言い換えると、 外部関数がc_char_pのrestypeを持つ場合は、 c_char_pインスタンスではなく常にPython文字列を 受け取ることでしょう。
基本データ型のサブクラスはこの振る舞いを継承しません。
したがって、外部関数のrestypeがc_void_pの
サブクラスならば、関数呼び出しからこのサブクラスのインスタンスを
受け取ります。もちろん、value
属性にアクセスしてポインタの値を
得ることができます。
これらが基本データ型です:
sizeof(int) == sizeof(long)
であるプラットホームでは、
c_longの別名です。
signed int
データ型を表します。たいていは、
c_byteの別名です。
signed int
データ型を表します。たいていは、
c_longlongの別名です。
signed long
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
signed long long
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
signed short
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
size_t
データ型を表します。
unsigned char
データ型を表します。その値は小整数として
解釈されます。コンストラクタはオプションの整数初期化子を
受け取ります。オーバーフローのチェックは行われません。
unsigned int
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
sizeof(int) == sizeof(long)
であるプラットホームでは、
c_ulongの別名です。
unsigned long
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
unsigned long long
データ型を表します。コンストラクタは
オプションの整数初期化子を受け取ります。オーバーフローのチェックは
行われません。
unsigned short
データ型を表します。コンストラクタはオプションの
整数初期化子を受け取ります。オーバーフローのチェックは行われません。
void *
データ型を表します。値は整数として表されます。
コンストラクタはオプションの整数初期化子を受け取ります。
wchar_t
データ型を表し、値はユニコード文字列の
単一の文字として解釈されます。コンストラクタはオプションの
文字列初期化子を受け取り、その文字列の長さはちょうど
一文字である必要があります。
wchar_t *
データ型を表し、ゼロ終端ワイド文字列への
ポインタでなければなりません。コンストラクタは整数のアドレス
もしくは文字列を受け取ります。
bool
データ型(より正確には、C99の_Bool)を表します。
その値はTrueまたはFalseであり、コンストラクタは
どんなオブジェクト(真値を持ちます)でも受け取ります。
バージョン 2.6 で 新たに追加 された仕様です。
PyObject *
データ型を表します。引数なしでこれを呼び出すと
NULL
PyObject *
ポインタを作成します。
ctypes.wintypes
モジュールは他のWindows固有のデータ型を提供します。
例えば、HWND
、WPARAM
またはDWORD
です。
MSG
やRECT
のような有用な構造体も定義されています。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。