如果创建一个类型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即可对以上两种方式调用的修改
网友评论