zoukankan      html  css  js  c++  java
  • __repr__和__str__的区别

    一、 __repr__

    class Name:
        def __init__(self,name):
            self.name = name
    123
    

    上面打印类对象并不是很友好,显示的是对象的内存地址
    此时我们重构 __repr__

    class Name:
        def __init__(self,name):
            self.name = name
        def __repr__(self):
            return 'Name: %s' % self.name
    12345
    

    重构__repr__方法后,不管直接输出对象(面向开发者)还是通过print(面向用户)打印的信息都按我们__repr__方法中定义的格式进行显示了

    二、 __str__

    此时我们尝试下重构__str__

    class Name:
        def __init__(self,name):
            self.name = name
        def __str__(self):
            return 'Name: %s' % self.name
    12345
    

    此时,直接输出对象(面向开发者)显示对象的内存地址,使用print输入对象显示的是友好提示

    三、总结

    如果要把一个类的实例变成 str,就需要实现特殊方法__str__()
    __repr____str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向开发者

    想要直接输出对象(面向开发者)和使用 print 输入对象都显示的是友好提示除了重构__repr__,还可以重构__str__实现

    class Name:
        def __init__(self,name):
            self.name = name
        def __str__(self):
            return 'Name: %s' % self.name
        __repr__ = __str__
    123456
    

  • 相关阅读:
    [声明]博主退役了
    galgame(s?)
    atcoder grand contest 040 F Two Pieces
    AtCoder Grand Contest 040 E
    【AtCoder】CODE FESTIVAL 2016 qual C E-順列辞書 / Encyclopedia of Permutations
    GMOJ6282 向量
    [GMOJ6281] 串
    GMOJ 5909 跑商
    2019.10.28 GMOJ 6394 燃烧的火焰
    题解 CF1092B 【Teams Forming】
  • 原文地址:https://www.cnblogs.com/Henry121/p/13573817.html
Copyright © 2011-2022 走看看