如何在Python中访问Device类型变量dev_handle的poplk值?
如何访问Device对象中的设备类型值?
问题背景
- 执行
print(dev_handle)输出如下:
Device RET789-452.234 (alias=RET789), type poplk
dev_handle是Device类的实例,并非int、string、list或dict类型,尝试通过下标dev_handle[type]访问时报错:
TypeError: 'Device' object is not subscriptable
dev_handle由get_details方法创建,该方法从testbed.yaml读取设备数据,最终返回testbed_device_data、dev_handle和device_type三个值。
解决方案
1. 直接访问实例属性
从创建代码可知,device_detail.os就是你要的poplk值,而dev_handle本质就是device_detail对象,直接通过属性访问即可:
# 获取poplk值 device_type_value = dev_handle.os print(device_type_value) # 验证属性是否存在 if hasattr(dev_handle, 'os'): print("os属性存在,值为:", dev_handle.os) else: print("os属性不存在")
2. 查看对象的所有属性/方法
如果不确定属性名称,可通过dir()函数列出该对象的全部可用属性和方法,从中定位对应类型的属性:
print(dir(dev_handle))
输出结果里找类似os、device_type这类和设备类型相关的属性名,直接访问即可。
3. 直接使用方法返回的device_type
你的get_details方法已经直接返回了device_type(值就是poplk),可以直接接收这个返回值使用,无需再从dev_handle中提取:
testbed_device_data, dev_handle, device_type = get_details(your_testscript, your_device_ip) print(device_type) # 直接输出poplk
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

