簡體   English   中英

Python類型“實例”轉換

[英]Python Type 'Instance' Convert

我正在使用內置的SNMP庫從服務器獲取一些數據。 現在,當我取回它時,它會顯示為

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

當我打印出x[0] (假裝x是該響應^)時,我看到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]可以為整數,字符串或浮點數,等等。

有沒有辦法讀取“ Integer”(在這種情況下)?

謝謝

編輯:

我認為我沒有清楚地描述它。 我真的很在乎x[0] ,我想將x[1]轉換為它的內容,而無需修改從中獲取SNMP數據的類中的任何內容。 在此示例中,它是一個int但可以是浮點數或字符串。 我正在尋找一種方法來確定該實例的類型,然后將其轉換為

之所以得到<type 'instance'>是因為該庫使用的是老式類 您可以使用x.__class__獲得類名。 在您的示例中, x[0].__class__.__name__將是ObjectName

什么是對象以及打印該對象時顯示的內容不一定相關。

例:

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

因此,如果您想知道x[1]的類型,則必須調用type(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]實際含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM