魔术方法:__repr__(self) 和 __str__(self)
先看一个示例:
class Tab:
def __init__(self):
self.color = "yellow"
a = Tab()
print(a)
运行结果如下:
<__main__.Tab object at 0x0000017FBADFFD08>
Process finished with exit code 0
从上述结果可以看出,输出的是类名和内存地址,可有些时候并不想要这些数据,想要color属性还得再调用一次进行获取(a.color),如遇到私有属性的话还拿不出来,所以就得优化输出,优化成不调用就可以看到信息:
class Tab:
def __init__(self):
# 带下划线即为私有属性
self._color = "yellow"
def __repr__(self):
return self._color
def __str__(self):
return self._color
a = Tab()
print(a)
运行结果如下:
yellow
Process finished with exit code 0
上述代码中同时定义了 __repr__(self) 和 __str__(self)两个魔术方法,它俩都可以实现类实例返回的内容
如果
__repr__(self)和__str__(self)两者同时存在的话就优先调用__str__(self)后直接返回,如

本文介绍了Python中的魔术方法__repr__(self)和__str__(self),包括它们的用途、应用场景和区别。这两个方法用于将类实例转换为字符串,常用于自定义异常处理、数据替换和输出描述信息。__repr__返回的信息更精确,适合开发者,而__str__则注重可读性。文章通过示例代码展示了如何使用这两个方法,并提供了对比分析。
最低0.47元/天 解锁文章
1191

被折叠的 条评论
为什么被折叠?



