如何在python中将内存元素转换成字符串?

2024-06-25 23:29:53 发布

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

我想查看以下代码的内存元素的字符串表示形式: https://github.com/odoo/odoo/blob/11.0/addons/website_sale/controllers/main.py#L233

当我打印“keep”时,它在0xb1438fac处给出“odoo.addons.website.controllers.main.QueryURL对象”。

如何将其转换为字符串或可读格式

QueryURL类的原始代码在下面的链接中: https://github.com/odoo/odoo/blob/11.0/addons/website_sale/controllers/main.py#L233


Tags: 字符串代码pyhttpsodoogithubcommain
2条回答

正如您从得到的输出中得到的通知一样,keep是类型为QueryURL的对象。因为它是从已经定义的类生成的自定义对象,所以它缺少__repr__()__str__()方法。这些方法返回一个表示存储在自定义类中的数据的字符串。如果类中缺少这些方法,print函数将打印内存中存储对象的地址

已经存在的类,如intstr已经定义了它们的__repr__()。因此,无论何时打印int对象,都要查看它的值,而不是地址

要解决此问题,可以采用两种方法:

  1. 您只需定义一个自定义方法,将所需的数据从对象打印到控制台(或任何位置)。您可以在类外定义一个函数,该函数返回所需的字符串(您需要的字符串包含对象的数据),然后在print内调用该函数,如:print(functionWhichReturnsStringOfObject(Object))
  2. 或者只需编辑类定义,并向其添加__repr__()方法,其工作方式与上面的函数相同。这样做之后,您只需print(object)

看看source for QueryURL,在我看来,您必须调用url才能获得字符串表示。尝试:

print(keep())

相关问题 更多 >