2012-01-25 16 views
1

私は組み込みのSNMPライブラリを使ってサーバからデータを取得しています。私は(^ xはその応答であるふり)x[0]をプリントアウトすると今、私はそれを取り戻すとき、それはPython Type 'Instance' Convert

.>>> [ObjectName(1.2.6.1.4.1.111.1.4.1.7), Integer(21)]

としてリストに表示さIは1.2.6.1.4.1.111.1.4.1.7および21を参照しますx[1]については、type(x[0])の場合は<type 'instance'>となります。

今私の質問は、x[1]のタイプを見つけてそれに変換する方法はありますか? (x[0]は常に文字列になりますが、x[1]は、整数、文字列であるか、この場合の「整数」()

おかげ

編集読み込むことする方法があるなど

をフロートすることができます?

私はそれをはっきり記述したとは思えません。私は実際にはx[0]を気にしました。x[1]を、私がSNMPデータを取得しているクラスから何も変更せずに変換したいと思います。 intでも可能ですが、浮動小数点数または文字列。そのインスタンスのタイプが何であるかを判断し、それに変換する方法を探しています

答えて

1

<type 'instance'>はライブラリがold-style classesを使用しているため入手できます。 x.__class__を使用してクラス名を取得できます。あなたの例ではx[0].__class__.__name__ObjectNameになります。

+0

ありがとう! – Kartik

0

オブジェクトを印刷するときに表示されるオブジェクトとは、必ずしも関連しているとは限りません。

例:

>>> class Foo: 
...  def __str__(self): 
...   return 'my personal string' 
>>> 
>>> f = Foo() 
>>> type(f) 
<class '__main__.Foo'> 
>>> print(f) 
my personal string 

だから、あなたがtype(x[1])を呼び出す必要がありx[1]の種類を知りたい場合。

そして、同じタイプの使用をx[0]を変換しようとする:

x = [ObjectName(1.2.6.1.4.1.111.1.4.1.7), Integer(21)] 
converted = type(x[1])(x[0]) 

でもそれがうまくいく場合しかし、本当にあるかx[0]x[1]に依存します。

+0

質問をもう一度お読みください。私はちょうどそれを更新しました – Kartik