私は次のコードを持っています:
class MyStruct(ctypes.Structure):
_fields_= [('id', ctypes.uint),
('perm', ctypes.uint)]
クラスが定義されると、バッファから自分のフィールドに直接データをコピーできます。例えば:
ms = MyStruct.from_buffer_copy("\xAA\xAA\xAA\xAA\x11\x11\x11\x11")
print ms.id, ms.perm
すべてが正常に機能します。ここで、idは0xAAAAAAAAになり、permは0x11111111に等しくなります。
今、私は次のコードを使用して、インスタンス化中に同じことをしようとしました:
class MyStruct(ctypes.Structure):
_fields_= [('id', ctypes.uint),
('perm', ctypes.uint)]
def __init__(self):
super(MyStruct, self).__init__()
self.from_buffer_copy("\xAA\xAA\xAA\xAA\x11\x11\x11\x11")
ms = MyStruct()
print ms.id, ms.perm
しかし、私のコードは次のステートメントでエラーを発生させます:
AttributeError:'MyStruct'オブジェクトに属性がありません'from_buffer_copy'
いくつかの調査の後、私はそれfrom_buffer_copy
がctypes._CData
方法であることを発見しました。ドキュメントでは、その_CData
クラスは非公開クラスであると読むことができます。
だからここに私の問題。コンストラクターで使用したいfrom_buffer_copy
のですが、現時点では「呼び出し不可」に見えます。私たちを手伝ってくれますか ?
お返事ありがとうございますよろしく
PS:実際のコードでは、 fields変数super(MyStruct,self).__init__(id=0x44444444,perm=0x11111111)
に多くの引数があるため、このスタイルは使用したくありません。