网络编程
位置:首页>> 网络编程>> Python编程>> Python面向对象编程repr方法示例详解

Python面向对象编程repr方法示例详解

作者:小菠萝测试笔记  发布时间:2021-10-02 23:38:09 

标签:Python,面向对象,repr

为什么要讲 __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.jb51.net/article/64333.htm

来源:https://blog.csdn.net/qq_33801641/article/details/120232632

0
投稿

猜你喜欢

  • setTimeoutsetTimeout 语法例子用 setTimeout 来执行 function不断重复执行的 setTimeout设定
  • 我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输
  • 大家在使用ASP设计用户提交表单的时候,如果涉及到网址输入框,那么相信都有可能会用到这个效果,使用正则表达式验证网址合法性。代码如下:<
  • Mako是一个模板库。一种嵌入式的语言,能够实现简化组件布局以及继承,主要的用途也是和作用域有关,但是效果是最直接切灵活的,这些都是mako
  • 将list拼接为一个字符串在 python 中如果想将 list 拼接为一个字符串,可使用 join() 方法。join() 方法描述将序列
  • 许多游戏玩家一定会对游戏中的动态鼠标指针有很深的印象,其实只要一句简单的CSS(层叠样式表),你也能在网页上实现这种效果。首先,你需要一个鼠
  • MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。标准的SQL模式匹
  • show parameter processes; 然后 更改系统连接数 alter system set processes=1000 s
  • keras中正则化(regularization)keras内置3种正则化方法keras.regularizers.l1(lambda)ke
  • JSON是一种轻量级的数据交换格式,各种语言都有良好的支持。字典是Python的一种数据结构。可以看成关联数组。有些时候我们需要设计到字典转
  • #共有方法 + * instra='人生苦短'strb='我用python'lista=list(range
  • 事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。什么?你还不知
  • 前言本文主要给大家介绍了关于golang分页算法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧示例代码如下://
  • 一、描述在利用django做网络开发的时候我们会遇到一个问题就是,我们建立了多张数据表,但是多张数据表中的内容是不一样的,但是之间有着联系比
  • 本文主要是介绍Go,从语言对比分析的角度切入。之所以选择与Python、Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,
  • 曲线一解释这里是使用matplotlib来绘制正态分布的曲线。代码实现import numpy as npimport matplotlib
  • 在过去的两年里,你能想象的一些很烂的应用设计也入驻了优雅的iPhone。通过它周边的宣传,使得世界各地的设计者们都利用这个新的移动工具来一展
  • 在python中,通过如下两个模块可以实现邮件的自动化操作smtplibemailsmtplib模块是对SMTP协议的封装,用于发送邮件;e
  • CSS布局中可以用javascript判断浏览器版本看如下的javascript脚本: if (window.XMLHt
  • 爬取结果:爬取代码import osimport jsonimport requestsfrom tqdm import tqdmdef l
手机版 网络编程 asp之家 www.aspxhome.com