python 类型对象的自定义print输出

2020-03-26  本文已影响0人  Zszen

如果创建一个类型A的实例a, 对其进行print(a), 那么得到的 <__main__.A object at 0x104e02cf8>

如何自定义它呢?
直接在类中覆盖这个函数即可

def __str__(self):
    return '你想输出的字符串'

那么之后print(a)你会看到你想输出的字符串

但你又发现了print([a])为什么没起作用 [<__main__.A object at 0x104e02cf8>]

哪里出问题了?
其实这里输出的字符串不在魔法函数__str__()中调用

def __repr__(self):
    # return self.__str__()
    return '你想输出的字符串'

print([a])终于起作用了[你想输出的字符串]

事实上,当我们输出某个实例化对象时,其调用的就是该对象的 __repr__()方法,输出的是该方法的返回值。

直接修改repr即可对以上两种方式调用的修改

上一篇 下一篇

猜你喜欢

热点阅读