首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python类型'Instance‘转换

Python类型'Instance‘转换
EN

Stack Overflow用户
提问于 2012-01-25 08:16:45
回答 2查看 7.5K关注 0票数 1

我正在使用一个内置的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,但它可以是一个浮点型或一个字符串。我正在寻找一种方法来确定该实例的类型,然后将其转换为该类型

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 08:39:09

因为库使用的是old-style classes,所以你会得到<type 'instance'>。您可以使用x.__class__获取类名。在您的示例中,x[0].__class__.__name__应该是ObjectName

票数 1
EN

Stack Overflow用户

发布于 2012-01-25 08:36:32

什么是对象和打印该对象时显示的内容不一定相关。

示例:

代码语言:javascript
复制
>>> 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]转换为相同的类型,请使用:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8996265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档