我正在使用一个内置的SNMP库从服务器上获取一些数据。现在,当我拿回它时,它在一个列表中显示为
.>>> [ObjectName(1.2.6.1.4.1.111.1.4.1.7), Integer(21)]
当我打印出x[0] (假设x是响应^)时,我看到的是x[1]的1.2.6.1.4.1.111.1.4.1.7和21,但当我打印type(x[0])时,我得到的是<type 'instance'>。
现在我的问题是,有没有一种方法可以找到x[1]的类型并将其转换为该类型?(x[0]将始终是一个字符串,但x[1]可以是整数、字符串或浮点数等。
有没有办法读取"Integer“(在本例中)?
谢谢
编辑:
我想我描述得不够清楚。我真的很关心x[0],我想将x[1]转换成原来的样子,而不需要修改从中获取数据的类的任何内容。在本例中,它是一个int,但它可以是一个浮点型或一个字符串。我正在寻找一种方法来确定该实例的类型,然后将其转换为该类型
发布于 2012-01-25 08:39:09
因为库使用的是old-style classes,所以你会得到<type 'instance'>。您可以使用x.__class__获取类名。在您的示例中,x[0].__class__.__name__应该是ObjectName。
发布于 2012-01-25 08:36:32
什么是对象和打印该对象时显示的内容不一定相关。
示例:
>>> 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]到底是什么。
https://stackoverflow.com/questions/8996265
复制相似问题