如何在VS代码中调试Python时自定义对象的字符串表示



我正试图调试我在VS Code中使用的一个非常复杂的python脚本,我意识到如果我使用的类以有意义的方式表示,我的生活会轻松很多。

目前,调试面板将我的对象表示为类似<foo.Bar object at 0x000002C643F960A0>的东西,但我更希望我可以通过覆盖它的一些功能来指定它们应该如何显示

我尝试过覆盖__str__()函数,但没有成功。遗憾的是,我的谷歌搜索没有找到任何有用的东西。

欢迎提出任何想法!

如果这是转发,我深表歉意——类似的问题没有正确滚动。

这可以通过重写对象的__repr__()方法来完成。

class Person(object):
def __init__(self, name: str, age: int) -> None:
self.name = name
self.age = age
def __repr__(self) -> str:
return f"Person({self.name=}, {self.age=})"

VS Code的调试器使用__repr__()方法,而不是__str__()方法,因为__str__()用于面向用户的表示,而__repr__()用于调试。

最新更新