zoukankan      html  css  js  c++  java
  • Python

    为什么要讲 __repr__

    • 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示)
    • 假设在开发调试过程中,希望使用 print 实例对象时,输出自定义内容,就可以用 __repr__ 方法了
    • 或者通过 repr() 调用对象也会返回 __repr__ 方法返回的值
    • 是不是似曾相识....没错..和 __str__ 一样的感觉

    代码栗子

    class A:
        pass
    
        def __repr__(self):
    
    
    a = A()
    print(a)
    print(repr(a))
    print(str(a))
    
    
    # 输出结果
    <__main__.A object at 0x10e6dbcd0>
    <__main__.A object at 0x10e6dbcd0>
    <__main__.A object at 0x10e6dbcd0>

    默认情况下,__repr__() 会返回和实例对象 <类名 object at 内存地址> 有关的信息

    重写 __repr__ 方法

    class PoloBlog:
        def __init__(self):
            self.name = "小菠萝"
            self.add = "https://www.cnblogs.com/poloyy/"
    
        def __repr__(self):
            return "test[name=" + self.name + ",add=" + self.add + "]"
    
    
    blog = PoloBlog()
    print(blog)
    print(str(blog))
    print(repr(blog))
    
    
    # 输出结果
    test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
    test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
    test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]

    只重写 __repr__ 方法,使用 str() 的时候也会生效哦

    class PoloBlog:
        def __init__(self):
            self.name = "小菠萝"
            self.add = "https://www.cnblogs.com/poloyy/"
    
        def __str__(self):
            return "test[name=" + self.name + ",add=" + self.add + "]"
    
    
    blog = PoloBlog()
    print(blog)
    print(str(blog))
    print(repr(blog))
    
    
    # 输出结果
    test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
    test[name=小菠萝,add=https://www.cnblogs.com/poloyy/]
    <__main__.PoloBlog object at 0x10e2749a0>

    只重写 __str__ 方法的话,使用 repr() 不会生效的哦!

    str() 和 repr() 的区别

    https://www.cnblogs.com/poloyy/p/15253032.html 

     
  • 相关阅读:
    elementui组件库eldialog弹出框被遮罩层挡住
    python常规基础操作
    python中的字典排序
    python列表面试题
    python logging日志模块
    python序列之列表
    jmeter中csv连接数据库
    python必会的知识基础
    jmeter tcp 压力测试
    python模块基础知识练习
  • 原文地址:https://www.cnblogs.com/poloyy/p/15250973.html
Copyright © 2011-2022 走看看