• 技术文章 >Python技术 >Python基础教程

    _repr_在python中是正式还是非正式

    小妮浅浅小妮浅浅2021-01-11 15:16:37原创2016

    在python方法的创建中,有的是为了让计算机能够快速识别的,有的是服务于我们使用者的。相信这么说,小伙伴们已经大致知道正式和非正式使用的不同方向的。关于_repr_的使用上,经常会跟__str__放在一起讨论。当我们向开始使用_repr_前,需要弄清楚在python中是正式还是非正式的,下面就这么问题展开讨论。

    1.__repr__函数使用

    也许可能也听说过__repr__函数,它也可以实现根据我们的需要自定义输出的功能。比如我们把上面的代码改下函数名,也可以得到一样的结果。

    class point:
        def __init__(self, x, y):
            self.x = x
            self.y = y
     
        def __repr__(self):
            return 'x: %s, y: %s' % (self.x, self.y)

    我们运行它,同样会得到:

    x: 3, y: 4

    和我们上篇代码结果一样,这里__repr__正式,__str__ 非正式。

    2.__repr__函数正式和非正式分析

    什么是正式?什么是非正式?光听文档上还是太抽象了,那我们就来看看几个 Python 内置对象的__repr__、__str__区别。 (PS:因为 Python 内置函数 repr() 和 str() 分别调用对象的__repr__和__str__,所以这边就用这两个函数来举例。)

    import datetime
    s = 'hello'
    d = datetime.datetime.now()
    print(str(s))
    print(repr(s))
    print(str(d))
    print(repr(d))

    输出结果:

    hello
    'hello'
    2018-11-29 22:39:18.014587
    datetime.datetime(2018, 11, 29, 22, 39, 18, 14587)

    可以看出repr()更能显示出对象的类型、值等信息,对象描述清晰的。 而str()能够让我们最快速了解到对象的内容,可读性较高。

    还有哦,在 Python 交互式命令行下直接输出对象默认使用的是__repr__。

    通过本篇的学习,我们可以明确__repr__是正式的,因为主要是针对服务于程序的运行,而__str__是给人查阅和使用,大家需要注意区分。

    专题推荐:python repr
    上一篇:python中如何用logging把日志输出到文件和控制台? 下一篇:python中callable的对象有哪些?

    相关文章推荐

    • Python __repr__()方法:显示属性• python中repr函数是怎么用的?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网