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
投稿
猜你喜欢
- 在我们的日常生活工作中,经常会遇到需要上传日志的场景,比如多台机器运行同一个程序,并且需要记录每台机器程序产生的日志,根据相关关键词告警,或
- 代码如下:Set Catalog_object= Server.CreateObject("ADO
- 1、cd /usr/local/ ##进入local目录2、cp /home/soft/MySQL-5.7.15-Linux-glibc2.
- 1.前期准备1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用。pip freeze >requ
- 1. 安装vim:# apt-get install -y vim-gnome2. 安装ctags,ctags用于支持tagli
- 目的现有两幅栅格图像,一个是某地区道路栅格图,一个是某地区土地利用类型图,需要将道路叠加到土地利用类型图中,即叠加后,重合的像元值以道路图为
- 1:构图图形的层次感图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。我们所说
- 这个问题是编码的问题在开头导入个包就行了,简答粗暴import encodings.idna补充:执行Python出现LookupError
- 大凡人世间的痛苦,多是因放不下有时候我常想,痛苦,该是时光刮给生命的一场飓风吧生活,本就是以这样一种特别的方式,掀起遮盖的一切,让你看到人生
- 此前piscdong已经做过一次评测了,这次的Beta正式推出,我也来参与一下.当回小白鼠吧.新的界面设计非常让人兴奋750){this.r
- 今天想围绕“产品交互设计”说说一些我们的想法,一说到产品设计,我想在坐的各位脑海里肯定联想到了很多表单设计、导航设计、界面布局等等,但是今天
- 今天在验证接口的并发问题时,把之前通过 redis 解决的并发压力转移到 mysql 上(redis 在 set 保存数据和数据过期需要去向
- 1、打开一个记事本,将需要安装的第三方python依赖包写入文件,比如:需要安装urllib3、flask、bs4三个python库(替换成
- 一、访问者模式(Visitor Pattern)数据结构中保存着许多元素,当我们希望改变一种对元素的处理方式时,要避免重复的修改数据结构。那
- 导语哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦!中国象棋是一种古老的棋类游戏,大约有两千
- Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum)。 * 的圣诞节期间,吉多·范罗苏姆为了在阿姆
- PyMongo是什么PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.安装环境
- 1、很多B2C或者淘宝的卖家反应,下单了但没有支付的占有率超过30%,有的甚至到40%。对于冲动性消费的商品来说,这个70%左右的转化率其实
- 问题描述: 买了mac电脑,第一次装mysql,不知道初始密码,如何修改初始密码记录下。解决方式:htt
- Python是静态作用域语言,尽管它自身是一个动态语言。也就是说,在Python中变量的作用域是由它在源代码中的位置决定的,这与C有些相似,