将python变量附加到列表时,我得到的是对象值

2024-06-28 14:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

print("Device discovered: %s" % remote)
m.append(remote)
print(m) 

我得到以下结果。我怎样才能得到相同的值是列表名m

Device discovered: 0013A20041481642 - REMOTE
[<digi.xbee.devices.RemoteZigBeeDevice object at 0x7f42c312ceb8>]

Tags: 列表objectremotedeviceatdevicesprintdiscovered
2条回答

你试过m.append(str(remote))吗?有可能在remote对象中实现了__str__函数。这种神奇的函数将在必要时处理对象到字符串的转换。格式化对象时,需要将其转换为str,但将其附加到列表时则不是。你知道吗

列表内容使用所包含对象的repr()结果,该结果反过来对对象使用__repr__方法。你知道吗

print()使用str()转换对象,如果存在,则使用__str__方法,否则使用__repr__。你知道吗

您的remote对象(一个digi.xbee.devices.RemoteZigBeeDevice实例)只有一个__str__方法,没有__repr__方法。实现后者以自定义对象在列表中的显示方式。你知道吗

或者,使用以下选项打印列表中的所有单个值:

print(*m)

然后用空格分隔,使用sep='...'指定不同的分隔符。你知道吗

也可以在打印前将列表中的所有对象转换为字符串:

print([str(obj) for obj in m])

并打印字符串列表。你知道吗

相关问题 更多 >