5

これは何よりもPythonとSWIGの質問だと思います...

SWIG Python バインディングを含む C++ パッケージを使用しています。私が受け取るオブジェクトの 1 つは、タイム スタンプを抽出しようとしている UTC タイム スタンプです。

オブジェクトには次の特徴があります。

>>> print type(obj)
<type 'SwigPyObject'>

>>> print dir(obj)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__hex__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__ne__', '__new__', '__oct__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'acquire', 'append', 'disown', 'next', 'own']

>>> print obj
<Swig Object of type 'UtcTimeStamp *' at 0x0379F320>

そこからデータを抽出するにはどうすればよいですか?


更新: DateTime構造体から派生したUTCTimeStamp
クラスを 見つけました。これは、オープン ソースのQuickFixパッケージの一部です。

ただし、データへのアクセス方法はまだわかりません。DateTime には getYear() などの単純な getter 関数がありますが、それらにアクセスするにはどうすればよいでしょうか?

4

2 に答える 2

4

qfTimeField.getValue()時間フィールドでを使用する代わりに、 を使用してから、結果の文字列qfTimeField.getString()のみを使用しstrptime()ます。例えば:

qfSendingTime = fix.SendingTime()
message.getHeader().getField(qfSendingTime)
my_datetime = datetime.strptime(qfSendingTime.getString(), '%Y%m%d-%H:%M:%S.%f')
于 2013-02-07T16:21:50.340 に答える
2

試しましたobj.getYear()か?UTCTimeStampから派生したドキュメントに表示されるDateTimeため、親クラスのメソッドにアクセスできるはずです。

それがうまくいかない場合、どんな種類のオブジェクトが得られますnewobj = obj.next()か? 試しましたかprint obj.__doc__?

編集: http://www.swig.org/Doc1.3/Python.html#Python_nn27aから:

このポインター値は、型のオブジェクトを受け取ることを期待するさまざまな C 関数に自由に渡すことができます...唯一できないことは、Python からポインターを逆参照することです。

そのため、DateTime. あなたが何を包んでいるのかわからないので、それが具体的に何であるかはわかりません。

この場合、それはhttp://www.quickfixengine.org/quickfix/doc/html/struct_f_i_x_1_1_utc_time_stamp_convertor.htmlです。これをテストすることはできませんが、次のように呼び出すと思います。

import quickfix
converter = quickfix.UtcTimeStampConverter()
string = converter.convert(obj)
于 2011-07-22T20:47:27.717 に答える