操作
整備 #3365
完了Pythonのテンプレートコードでデフォルトではデータポート変数がうまく初期化できない問題を解決する
開始日:
2015/11/18
期日:
進捗率:
100%
予定工数:
説明
self._d_flippedImage = RTC.CameraImage(RTC.Time(0,0),0)
メンバーが実際には7つあるため、実行するとエラーになる。
n-ando さんが約9年前に更新
以下のようにすれば、解決可能
arg1 = [None] * ((len(RTC._d_CameraImage) - 4) / 2) self._d_flippedImage = RTC.CameraImage(*arg1)
RTC._d_CameraImage には CameraImage のメンバーの情報が入っている。
_0_RTC._d_CameraImage = ( omniORB.tcInternal.tv_struct, CameraImage, CameraImage._NP_RepositoryId, "CameraImage", "tm", omniORB.typeMapping["IDL:RTC/Time:1.0"], "width", omniORB.tcInternal.tv_ushort, "height", omniORB.tcInternal.tv_ushort, "bpp", omniORB.tcInternal.tv_ushort, "format", (omniORB.tcInternal.tv_string,0), "fDiv", omniORB.tcInternal.tv_double, "pixels", (omniORB.tcInternal.tv_sequence, omniORB.tcInternal.tv_octet, 0) )
メンバーの数は、(len(RTC._d_CameraImage) - 4) / 2 で取得可能なので、None * 要素数 のタプルを用意し、引数に * 付きで与える。
これにより、とりあえずすべてのメンバーを None で初期化できる。
操作