python特殊函数__str__、__repr__和__len__
1.__str__
首先介绍__str__
class Students(object):
def __init__(self, *args):
self.names = args # def __str__(self):
# return str(self.names)
# __repr__ = __str__
ss = Students('hyq','ysy')
ss >>><__main__.Students at 0x2075a779828>
打印类对象显示的是对象的内存地址,下面重构__repr__和__str__方法
再看:
class Students(object):
def __init__(self, *args):
self.names = argsdef __str__(self):
return str(self.names)
# def __repr__(self):
# return str(self.names)
ss = Students('hyq','ysy')
ss >>><__main__.Students at 0x2075a78a860>
class Students(object):
def __init__(self, *args):
self.names = args # def __str__(self):
# return str(self.names)
def __repr__(self):
return str(self.names)
ss = Students('hyq','ysy')
ss >>>('hyq', 'ysy')
可以看到,重构__repr__方法后,直接输出对象,能够按照__repr__中定义的格式进行显示;
而重构__str__方法后,直接输出对象,显示的是对象的内存地址,并不是__str__定义的格式
当然,用print都能够显示__repr__和__str__定义的格式
class Students(object):
def __init__(self, *args):
self.names = args # def __str__(self):
# return str(self.names)
def __repr__(self):
return str(self.names)
ss = Students('hyq','ysy')
print(ss) >>>('hyq','ysy') ————————————————————————————————————————————分割线————————————————————————————————————
class Students(object):
def __init__(self, *args):
self.names = argsdef __str__(self):
return str(self.names)
# def __repr__(self):
# return str(self.names)
ss = Students('hyq','ysy')
print(ss) >>>('hyq','ysy')
注意:
在代码中一般写成:
def __str__(self):
return str(self.names)
__repr__ = __str__
2.__len__
如果一个类表现得像一个list,要获取有多少元素,就得用len()函数
要让len()函数正常工作,类必须提供一个特殊方法__len__(),返回元素的个数
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names) ss = Students('hyq','ysy')
print(len(ss) >>>2
python特殊函数__str__、__repr__和__len__的更多相关文章
- 034.Python的__str__,__repr__,__bool__ ,__add__和__len__魔术方法
Python的其他方法 1 __str__方法 触发时机: 使用print(对象)或者str(对象)的时候触发 功能: 查看对象信息 参数: 一个self接受当前对象 返回值: 必须返回字符串类型 基 ...
- Python——详解__str__, __repr__和__format__
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例 ...
- python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法
一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...
- python 中的 %s,%r,__str__,__repr__
1.%s,%r的区别 在进行格式化输出时,%r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别. %s ⇒ str(),比较智能: %r ⇒ repr(),处理较 ...
- python基础---- __getattribute__----__str__,__repr__,__format__----__doc__----__module__和__class__
目录: 一. __getattribute__ 二.__str__,__repr__,__format__ 三.__doc__ 四.__module__和__class__ 一. __getattri ...
- Python的程序结构[1] -> 方法/Method[4] -> 魔术方法 __call__ / __str__ / __repr__
__call__ 方法 __call__ 是当对象被调用时会调用的方法,允许一个对象(类的实例等)像函数一样被调用,也可以传入参数. 1 class Foo(): 2 def __init__(sel ...
- 复习python的__call__ __str__ __repr__ __getattr__函数 整理
class Www: def __init__(self,name): self.name=name def __str__(self): return '名称 %s'%self.name #__re ...
- Python中特殊函数__str__()
在类中定义了__str__(self)方法,那么当使用print打印实例对象的时候,就会直接打印出在这个方法中return的数据. 案列: 1 class Book: 2 3 def __init__ ...
- day29 类中的内置函数方法 __str__ __repr__ __call__ isinstance() issubclass()
__str__()__repr__()__len__() str() 转字符串repr() 让字符原形毕露的方法len() 计算长度 内置的方法很多,但是并不是全部都在object中,比如len(), ...
随机推荐
- linux:gpg加密和解密
http://www.bubuko.com/infodetail-650747.html
- Eclipse中Project的属性Deployment Assembly(部署程序集)消失了,不存在了,去哪儿了
1. 该项目不是web项目,所以不存在Deployment Assembly 属性.在Eclipse中,怎样将一个非web project变成一个web project? 1)右键项目,选择Proje ...
- update使用inner join
一.update 基础语法 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 上面是我们常见的更新表的方式,其实我们还可以去另外一张表的数据来更新当前的表数据,如现在就有这 ...
- SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。
这是一篇2010年比较古老的文章了,是在QQ群里一位群友提到的,无聊下载看了下,其实也没有啥高深的理论,抽空实现了下,虽然不高大上,还是花了点时间和心思优化了代码,既然这样,就顺便分享下优化的思路和经 ...
- WPF 模板绑定父级控件内容
WPF 模板绑定父级控件内容 <Style TargetType="Button" x:Key="btn"> <Setter Property ...
- angualrjs 配置超时时间
timeout 1 本想通过$httpProvider的defaults属性配置timeout时间, defaults中没有这个属性. https://docs.angularjs.org/api/n ...
- 每天一个linux命令(10):cat
1.命令简介 cat (concatenate,连接)命令将[文件]或标准输入组合输出到标准输出,如果没有指定文件,或者文件为"-",则从标准输入读取. 2.用法 cat [选项] ...
- java 获取当天(今日)零点零分零秒
两种方法 一种得到的是时间戳,一种得到是日期格式: 1.日期格式的 Calendar calendar = Calendar.getInstance(); calendar.setTime(new D ...
- [转]Redis cluster failover
今天测试了redis cluster failover 功能,在切换过程中很快,但在failover时有force 与takeover 之分 [RHZYTEST_10:REDIS:6237:M ~] ...
- LVS简介与使用
一.LVS是什么? LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我们国家的章文嵩博士的一个开源项目.在linux内存2.6中,它已经成为内核的一部分,在此之 ...