【PyCharm调试】显示一个对象值时会调用的方法
在 PyCharm 调试时,当需要显示一个对象的值时,它会调用对象的 __repr__() 方法或 __str__() 方法。具体来说:
- 优先调用
__repr__():- PyCharm 首先尝试调用对象的
__repr__()方法。 __repr__()是一个为开发者设计的方法,应该返回一个 精准且完整 的字符串,能够唯一标识这个对象,通常以<ClassName at 0x...>这样的格式显示。
- PyCharm 首先尝试调用对象的
__repr__()不可用时调用__str__():- 如果对象未定义
__repr__(),PyCharm 会尝试调用__str__()方法。 __str__()是为用户设计的方法,应该返回一个 简洁且可读性更高 的字符串。
- 如果对象未定义
- 默认行为:
- 如果对象未定义
__repr__()和__str__()方法,Python 会使用其默认实现,即基类object的__repr__()方法。它通常返回类似<ClassName object at 0x...>的内容。
- 如果对象未定义
示例
以下代码可以帮助理解 PyCharm 调用 __repr__() 和 __str__() 的行为:
class MyClass:def __repr__(self):return "MyClass(repr)"def __str__(self):return "MyClass(str)"# 在调试窗口中
obj = MyClass()
print(obj) # 输出会调用 __str__(): MyClass(str)
