我正试图调试我在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__()
用于调试。