1

Windows dll から一連の python 関数を作成しようとしていますが、新しい関数ごとに docstring を添付したいと考えています。

私の現在のコード:

import ctypes

lib=ctypes.WinDLL('example.dll')

VCS_OpenDevice=lib['VCS_OpenDevice']
VCS_OpenDevice.restype=ctypes.c_double

このスクリプトをインタープリターで実行して関数を使用しようとすると、「docstring がありません」というメッセージが表示されます。

そこに何かを追加することがわかりません。どんな助けでも大歓迎です。

ここに画像の説明を入力

4

2 に答える 2

4

関数ポインタの__doc__属性に割り当てます。ctypes

VCS_OpenDevice.__doc__ = 'My docstring'

__doc__はPythonオブジェクトのdocstring属性であり、ctypesオブジェクトを使用するとこの属性に書き込むことができます。

必須のlibcデモンストレーション(私はWindowsではなくMacを使用していますが、原則は同じです):

>>> from ctypes import *
>>> libc = cdll.LoadLibrary("libc.dylib") 
>>> libc.time.__doc__ = 'time -- get time of day'
>>> print libc.time.__doc__
time -- get time of day

IPythonはそれをうまく拾うことができるようです:

In [4]: libc.time?
Type:       _FuncPtr
String Form:<_FuncPtr object at 0x1054b8ef0>
File:       /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ctypes/__init__.py
Docstring:  time -- get time of day
于 2013-01-08T20:41:33.337 に答える