千家信息网

python的call、len、str、repr怎么使用

发表于:2025-12-06 作者:千家信息网编辑
千家信息网最后更新 2025年12月06日,这篇文章主要讲解了"python的call、len、str、repr怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的call、le
千家信息网最后更新 2025年12月06日python的call、len、str、repr怎么使用

这篇文章主要讲解了"python的call、len、str、repr怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python的call、len、str、repr怎么使用"吧!

__call__方法

说明

让一个类的实例变成可执行的。

案例

class Cat:'''猫类'''def __init__(self, name):self.name = name        self.count = 0def eat(self):print(f'{self.name}正在进食!')def __call__(self, *args, **kwds) -> int:for i in args:self.count += 1print(f'{self.name}抓到了{i},已抓到了{self.count}只猎物')return self.countwhite_cat = Cat('大白猫')white_cat('麻雀', '老鼠')out:大白猫抓到了麻雀,已抓到了1只猎物大白猫抓到了老鼠,已抓到了2只猎物

white_cat('麻雀', '老鼠')效果完全等价于white_cat.__call__('麻雀', '老鼠')。实际上就是解释器做了个约定:实例后面()时实际就是调用该实例的__call__方法。

假如你定义的类的绑定方法只有一个(或某个方法使用频率非常高),那么可以把那个方法名写成__call__,这样后续使用时会方便很多,可以直接用实例名()来执行。

__len__方法

说明

对实例执行len()时实际就是调用它的__len__方法。

案例

class Cat:'''猫类'''def __init__(self, name):self.name = name        self.preys = []def __len__(self):return len(self.preys)def eat(self):print(f'{self.name}正在进食!')def __call__(self, *args, **kwargs):self.preys.extend(args)for i in args:print(f'{self.name}抓到了{i}')print(f'{self.name}抓到了{len(self)}只猎物!')white_cat = Cat('大白猫')white_cat('小麻雀', '小老鼠')white_cat('大麻雀', '大老鼠')white_cat('小猫鱼', '大青鱼')out:大白猫抓到了小麻雀大白猫抓到了小老鼠大白猫抓到了2只猎物!大白猫抓到了大麻雀大白猫抓到了大老鼠大白猫抓到了4只猎物!大白猫抓到了小猫鱼大白猫抓到了大青鱼大白猫抓到了6只猎物!

在这个案例中对之前的代码做了优化,现在的大白猫还能记住它抓到的所有猎物,当你len(white_cat)就可以知道大白猫抓到了几只猎物。

对一个实例使用len()时,实际上就是在调用这个实例的__len__方法。

__str__方法和__repr__方法

说明

可以自定义打印实例时字符串的内容。

案例

class Cat:'''猫类'''def __init__(self, name):self.name = name        self.preys = []def __len__(self):return len(self.preys)def eat(self):print(f'{self.name}正在进食!')def __call__(self, *args, **kwargs):self.preys.extend(args)for i in args:print(f'{self.name}抓到了{i}')print(f'{self.name}抓到了{len(self)}只猎物!')def __repr__(self):return f'啊,{self.name}抓住了"{",".join(self.preys)}"这些猎物。'def __str__(self):return f'哇,{self.name}抓住了"{",".join(self.preys)}"这些猎物。'white_cat = Cat('大白猫')white_cat('小麻雀', '小老鼠')white_cat('大麻雀', '大老鼠')white_cat('小猫鱼', '大青鱼')print(white_cat)out:大白猫抓到了小麻雀大白猫抓到了小老鼠大白猫抓到了2只猎物!大白猫抓到了大麻雀大白猫抓到了大老鼠大白猫抓到了4只猎物!大白猫抓到了小猫鱼大白猫抓到了大青鱼大白猫抓到了6只猎物!哇,大白猫抓住了"小麻雀,小老鼠,大麻雀,大老鼠,小猫鱼,大青鱼"这些猎物。

打印实例时会先调用__str__方法,没有__str__方法时会调用__repr__方法,两者都没有时打印的是类似这样的:"<main.Cat object at 0x00000299EE6C45E0>"。

__str__方法和__repr__方法的区别

  • print()时会先调用__str__方法,没有__str__方法时才调用__repr__方法。

  • 在交互模式下直接输入实例回车时显示的是__repr__方法返回的内容。

str函数和repr函数的区别

当参数是字符串数据类型时它们返回的内容不完全一致,其他的数据类型返回的内容完全一致。

test1 = 123ret1 = str(test1)ret2 = repr(test1)print(ret1, ret2, ret1 == ret2)test1 = '123'ret1 = str(test1)ret2 = repr(test1)print(ret1, ret2, ret1 == ret2)out:123 123 True123 '123' False

注意:对字符串数据进行repr后得到的内容会多一对单引号,长度会加2;对字符串数据进行str后得到的内容和原来一样。

感谢各位的阅读,以上就是"python的call、len、str、repr怎么使用"的内容了,经过本文的学习后,相信大家对python的call、len、str、repr怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

白猫 方法 猎物 老鼠 麻雀 实例 内容 就是 青鱼 小猫 字符 字符串 实际 数据 案例 正在 学习 一致 函数 实际上 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云开发读不全数据库记录 普陀区立体化网络技术厂家直销 闵行区第三方网络技术备案 金融工程软件开发 互联网科技对生活的影响作文 宁波嵌入式软件开发计划 尾矿库基础数据库在哪找 茂名市桓捷互联网科技 论文数据库怎么看几区 宽带服务器如何搭建多个网站 文化科技融合网络安全 oppoVPN服务器地址 欧盟的网络安全报告 数据库的英文全称以及缩写 第三方程序如何连接到报表服务器 电脑数据库一般用什么 无线网络安全威胁的防御 围棋习题软件开发 快云vps安装数据库 路由器截点截取数据库 西门子历史服务器数据备份恢复 江西软件开发大学排名 net软件开发培训班哪家好 杭州岳宸网络技术有限公司 网络安全靠人民新闻稿 河南达双影网络技术服务有限公司 软件开发外包价格 软件开发需确认的过程 国产数据库一体机介绍 无线网络安全威胁的防御
0