为什么加上一个列表控制台打印就变了捏?

最近做了个关于分数的自定义类型,代码如下所示

class fraction:
    def __init__(self, a, b):
        self.fraction = [a, b]

    ... ...

    # 读作
    def __str__(self):
        string = '{}分之{}'.format(self.fraction[0], self.fraction[1])
        return string

    ... ...

然后偶然间发现了个问题,输入

a = fraction(9, 2)
print(a)

控制台 正常显示 9分之2

但是,当把代码改成print([a])的时候,控制台的显示成了[<__main__.fraction object at 0x000002682CE6DFD0>]

这是为啥,有办法解决吗?(我是强迫症)

具体请参考
python中类的输出或类的实例输出为何是<__main__类名 object at xxxx>这种形式? - 人生与戏 - 博客园 原因: __str__()这个特殊方法将对象转换为字符串的结果 效果图: 代码: https://www.cnblogs.com/FlyingLiao/p/11337338.html

试试重写__repr__