美文网首页
Python3 - 改变对象的字符串显示

Python3 - 改变对象的字符串显示

作者: 惑也 | 来源:发表于2018-12-24 17:19 被阅读35次

    问题

    改变对象实例的打印或显示输出,让它们更具可读性。

    解决方案

    要改变一个实例的字符串显示,可重新定义它的__str__()__repr__()方法。例如:

    class Pair(object):
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
        def __repr__(self):
            return f"Pair({self.x!r}, {self.y!r})"
    
        def __str__(self):
            return f"({self.x!s}, {self.y!s})"
    

    __repr__() 方法返回一个实例的代码表示形式,通常用来重新构造这个实例。内置的 repr() 函数返回字符串,与我们使用的交互式解释器显示的值是一样的。
    __str__() 方法将实例转换为一个字符串,使用 str()print() 函数会输出这个字符串。比如:

    p = Pair(3, 4)
    
    p
    Pair(3, 4)   # __repr__() output
    
    print(p)
    (3, 4)   # __str__() output
    

    在格式化的时候,可以使用不同的字符串显示形式。其中 “!r” 对应 repr(); “!s” 对应 str(); “!a” 对应 ascii()。 特别地,!r 格式化代码,表示输出时使用 __repr__() 来代替默认的 __str__()。示例:

    p = Pair(3, 4)
    
    print(f"p is {p!r}")
    p is Pair(3, 4)
    
    print(f"p is {p}")
    p is (3, 4)
    

    讨论

    自定义 __repr__()__str__() 通常是很好的习惯,因为它能简化调试和实例输出。
    如果 __str__()没有被定义,那么就会使用 __repr__() 来代替输出。

    相关文章

      网友评论

          本文标题:Python3 - 改变对象的字符串显示

          本文链接:https://www.haomeiwen.com/subject/ovmzkqtx.html