魔术方法:__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)
两个魔术方法,它俩都可以实现类实例