Python中__str__()的妙用
目录
- 前言
- 知识点
- 剖析
- 后话
前言
这里是Python小技巧的系列文章。这是第三篇,
object.__str__(self)
方法的妙用。
书接上回,这次还是介绍Python类的内置方法,__str__()
据官方文档的介绍,在使用 str(object) 、format() 和 print()
的时候会调用__str__()
方法,该方法会将实例转换为字符串,返回值为 字符串 对象。
如果__str__()
没有被定义,就会调用 object.__repr__()
。
实现 str 方法来定制一个类的实例的字符串表示。
知识点
object.__str__(self)
:https://docs.python.org/zh-cn/3.8/reference/datamodel.html?object.reprobject.__repr__(self)
:https://docs.python.org/zh-cn/3/reference/datamodel.html?object.repr
关于__repr__()
,基本用不上。建议查看官方文档,粗略了解即可。
先来看一组简单的代码(这个类没有实现任何功能
"""demo.py""" class Nothing: ... if __name__ == "__main__": print(Nothing()) # <__main__.Nothing object at 0x000002C2CFD06650> 0x2c2cfd06650
默认的打印结果是当前类的实例的名称和内存地址,如下图所示(不夸张地说,这个类实例的打印可以说是毫无用处!!!
剖析
在代码复杂的情况下,再打印默认的类实例,那就显得太鸡肋了。
这个时候我们就需要重写 __str__()
方法了,使得它更加人性化。
再来看一组复杂点的代码
"""demo.py""" class Nothing: name = 'frica' age = 20 def __str__(self): return f'Nothing(name={self.name}, age={self.age})' if __name__ == "__main__": print(Nothing())
代码执行效果如下:
重写 __str__()
后与 默认打印的类实例对比如下图所示:
孰优孰劣一目了然
后话
本次介绍及重写了 __str__()
,在重写之后,可以更为方便且准确的描述信息类实例的信息,这对于我们的编程工作是有帮助的。更多相关Python __str__()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
python str()如何将参数转换为字符串类型
str()将参数转换为字符串类型 a = 26 print('我有'+str(a)+'个苹果') 输出:我有26个苹果 Python值被转换成字符串的两种机制 初学Python时可以发现,所有通过Python打印的字符串是被引号括起来的.而通过print语句打印则没有. 原因: Python打印值得时候,会保持该值在Python代码中的状态,而不是你希望用户所看到的状态.而通过print语句打印则是用户希望看到的状态. 例如: # 直接打印 >>> "Hello, world!
-
Python字符串函数strip()原理及用法详解
strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列.注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法:str.strip([chars]) str = "*****this is **string** example....wow!!!*****" print (str.strip( '*' )) # 指定字符串 * 输出结果: this is **string** example....wow!!! 从结果上看,可以注意到中间部分的字符并未删除,只
-
浅谈Python3中strip()、lstrip()、rstrip()用法详解
简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白符(包括\n.\r.\t.' ',即:换行.回车.制表符.空格) rstrip:用来去除结尾字符.空白符(包括\n.\r
-
Python中使用strip()方法删除字符串中空格的教程
strip()方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本. 语法 以下是strip()方法的语法: str.strip([chars]); 参数 chars -- 字符-从开始或结束的字符串被删除去除. 返回值 此方法返回所有字符从开始及字符串的末尾(默认空格字符)被去除后的字符串的一个副本. 例子 下面的例子显示了strip()方法的使用. #!/usr/bin/python str = "0000000this is string example....w
-
通过实例了解Python str()和repr()的区别
这篇文章主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 区别 其实用处就是最大的区别了:str()主要用来为终端用户输出一些信息,而repr()主要用来调试:同时后者的目标是为了消除一些歧义(例如浮点数的精度问题),前者主要为了可读. 使用 In [12]: s = 'abc' In [13]: print(str(s)) abc In [14]: print(2.0/11) 0
-
python strip()函数 介绍
函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符 s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符 注意: 1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ') 例如: 复制代码 代码如下: >>> a = ' 123'>>
-
python strip() 函数和 split() 函数的详解及实例
python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思:而split则是分割的意思.因此也表示了这两个功能是完全不一样的,strip可以删除字符串的某些字符,而split则是根据规定的字符将字符串进行分割.下面就详细说一下这两个功能, 1 Python strip()函数 介绍 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 r
-
Python中__str__()的妙用
目录 前言 知识点 剖析 后话 前言 这里是Python小技巧的系列文章.这是第三篇,object.__str__(self)方法的妙用. 书接上回,这次还是介绍Python类的内置方法,__str__() 据官方文档的介绍,在使用 str(object) .format() 和 print() 的时候会调用__str__() 方法,该方法会将实例转换为字符串,返回值为 字符串 对象.如果__str__()没有被定义,就会调用 object.__repr__(). 实现 str 方法来定制一个类
-
详解Python中__str__和__repr__方法的区别
对我当前工程进行全部测试需要花费不少时间.既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率. 但优点也是缺点,tmpfs 只把结果保存在内存中,所以你必须自己编写脚本来把结果回写到磁盘上进行保留.而且这些脚本必须良好书写和执行,否则就要失去部分或全部的工作成果了. 一种常见的方法是直接在tmpfs文件夹中工作,然后把工作成果备份到磁盘上的一个文件夹中.当您的机器启动时你从那个备份文件夹恢复tmpfs文件夹.启动之后用cron同
-
python中requests库session对象的妙用详解
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies. 举个栗子,跨请求保持cookies,在命令行上输入下面命令: # 创建一个session对象 s = requests.Session() # 用session对象发出get请求,设置cookies s.get('http://ht
-
Python中序列的修改、散列与切片详解
前言 本文主要给大家介绍了关于Python中序列的修改.散列与切片的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Vector类:用户定义的序列类型 我们将使用组合模式实现 Vector 类,而不使用继承.向量的分量存储在浮点数数组中,而且还将实现不可变扁平序列所需的方法. Vector 类的第 1 版要尽量与前一章定义的 Vector2d 类兼容. Vector类第1版:与Vector2d类兼容 Vector 类的第 1 版要尽量与前一章定义的 Vector2d
-
Python中enumerate函数代码解析
enumerate函数用于遍历序列中的元素以及它们的下标. enumerate函数说明: 函数原型:enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 即对一个可遍历的数据对象(如列表.元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标. 举例说明: 存在一个sequence,对其使用enumerate将会得到如下结果: start sequence[0]
-
介绍Python中几个常用的类方法
内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对象,在对象被删除之前调用 __new__(cls,*args,**kwd) 实例的生成操作 __str__(self) 在使用print语句时被调用 __getitem__(self,key) 获取序列的索引key对应的值,等价于seq[key] __len__(self) 在调用内联函数len()时被调用 __cmp__(stc,dst) 比较两个对象src和dst __ge
-
详解Python中的__new__、__init__、__call__三个特殊方法
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是self. __call__ : 对象可call,注意不是类,是对象. 先有创建,才有初始化.即先__new__,而后__init__. 上面说的不好理解,看例子. 1.对于__new__ class Bar(object): pass class Foo(object): def __new__(cls
-
Python中常用操作字符串的函数与方法总结
例如这样一个字符串 Python,它就是几个字符:P,y,t,h,o,n,排列起来.这种排列是非常严格的,不仅仅是字符本身,而且还有顺序,换言之,如果某个字符换了,就编程一个新字符串了:如果这些字符顺序发生变化了,也成为了一个新字符串. 在 Python 中,把像字符串这样的对象类型(后面还会冒出来类似的其它有这种特点的对象类型,比如列表),统称为序列.顾名思义,序列就是"有序排列". 比如水泊梁山的 108 个好汉(里面分明也有女的,难道女汉子是从这里来的吗?),就是一个"
-
Python中的Descriptor描述符学习教程
Descriptor是什么?简而言之,Descriptor是用来定制访问类或实例的成员的一种协议.额..好吧,一句话是说不清楚的.下面先介绍一下Python中成员变量的定义和使用. 我们知道,在Python中定义类成员和C/C++相比得到的结果具有很大的差别.如下面的定义: class Cclass { int I; void func(); }; Cclass c; 在上面的定义中,C++定义了一个类型,所有该类型的对象都包含有一个成员整数i和函数func:而Python则创建了一个名为Pcl
-
python中实现定制类的特殊方法总结
看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: 复制代码 代码如下: >>> class Student(object): ... def __init
随机推荐
- Python中的下划线详解
- PHP 快速排序算法详解
- 利用ASP规划聊天室
- Flex实现双轴组合图的设计思路及代码
- iOS App初次启动时的用户引导页制作实例分享
- javascript下计数器每秒自动加1
- javascript 中对象的继承〔转贴〕
- jQuery表单验证插件formValidator(改进版)
- jQuery操作DOM之获取表单控件的值
- php xml留言板 xml存储数据的简单例子
- Express的路由详解
- XML轻松学习手册(六):XML相关资源
- flashas菜鸟入门教程下载第1/2页
- Java中的IP地址和InetAddress类使用详解
- JQuery操作tr和td内容的方法实例
- LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题
- jQuery获取某天的农历日期并判断是否除夕或新年的方法
- Jquery异步请求数据实例代码
- 15个小时----从修改程序到自己些程序
- 使用C#发送带附件的电子邮件的方法的代码示例分析