首页 > 编程语言 >Python | 魔法函数`__str__`的用法

Python | 魔法函数`__str__`的用法

时间:2023-06-27 19:56:49浏览次数:38  
标签:__ name Python self str tom

__str__ 是 Python 内置函数,用于将对象转换为字符串表示形式。在 Python 中,每个类都可以重写 __str__ 方法,以便自定义对象的字符串表示形式。

当使用 print 函数将对象输出到控制台时,Python 会自动调用对象的 __str__ 方法,将其转换为字符串并输出到控制台。因此,对于一个自定义的类,如果想要在输出时以某种格式呈现类的实例对象,可以通过重写 __str__ 方法来实现。

__str__是Python中类对象自带的一个函数(通过其名字也能看出来,和__self__类似),那么它有什么作用呢?首先敲出下面的代码运行一下看看结果是什么:

class Person(object):
    def __init__(self, name = 'tom', age = 10):
        self.name = name
        self.age = age
        self.parent = None
 
tom = Person()
print(tom)

# 唔,在我这里输出了个看起来像是地址的东西
# >>> <__main__.Person object at 0x00000244B4A2EA90>

所以当我们打印一个实例化对象时,打印的其实是这个对象的地址。而通过自定义__str__()函数就可以帮助我们打印对象中相关的内容。

class Person(object):
    def __init__(self, name = 'tom', age = 10):
        self.name = name
        self.age = age
        self.parent = None
    
    def __str__(self):
        return "Your name is: " + self.name
    
tom = Person()
print(tom)

# 唔,果然输出了我们自定义的内容
# >>> Your name is: tom

总结:在python中调用print()打印实例化对象时会调用__str__()函数,如果__str__()中有返回值,就会打印其中的返回值。

标签:__,name,Python,self,str,tom
From: https://www.cnblogs.com/zhangxuegold/p/17509777.html

相关文章

  • 剑指 Offer 27. 二叉树的镜像
    请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:4  /  2  7 /\ /1 36 9镜像输出:4  /  7  2 /\ /9 63  1示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]来源:力扣(LeetCode)链接:https://lee......
  • 02-实际处理数据遇到的问题
    /*将某个文件夹中的全部文件,按以下两条规定重命名.一.如果文件名中含有'_'且'_'到'.'之间只有一位数,在这位数前面加'0'二.如果文件名中不含'_'且'.'前面只有一位数,在这位数前面加'0'程序目前存在无法解释的bug,当pAddress的路径和old,相同时文件名无法......
  • 第三阶段PTA题目集
    oop题目集合7菜单计价程序-5oop题目集合87-1课程成绩统计程序-1oop题目集合97-1统计Java程序中关键词的出现次数oop题目集合107-1容器-HashMap-检索  7-2容器-HashMap-排序  7-3课程成绩统计程序-2  7-4动物发声模拟器(多态)oop题目集合117-1容器-Array......
  • app端文章详情展示
    一、如何展示文章详情方案1:用户点击某一条文章,根据文章的id去查询文章内容表,返回渲染页面方案2:静态模板展示:根据文章内容通过模板技术生成静态的html文件,将该文件存入分布式文件系统minIO,并将生成好的html访问路径存入文章表中static_url。文章详情展示就通过该html去mi......
  • Python | 魔法函数`__len__`的用法
    在python的字符串、列表等元素的时候经常使用len()方法计算长度,之所以能够使用len()方法,就是因为它的类实现了__len__魔法函数如:classStudent():def__init__(self,name):self.name=namedef__len__(self):returnlen(self.name)s=Student("Jack......
  • Python 选择排序
    思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾重复第二步,直到所有元素均排序完毕 Code:1defselectSort(arr):2foriinrange(0,len(arr)):#i表示多少......
  • 公平的糖果交换
    爱丽丝和鲍勃拥有不同总数量的糖果。给你两个数组aliceSizes和bobSizes,aliceSizes[i]是爱丽丝拥有的第i盒糖果中的糖果数量,bobSizes[j]是鲍勃拥有的第j盒糖果中的糖果数量。两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果。一个人拥有的糖果总......
  • 高德地图动态Marker和自定义弹框、交互事件、中心点跳转
    高德地图vue3使用下载NPM:npmi@amap/amap-jsapi-loader--save根据官网提示,VUE3需要改变监听模式下载npmi@vue/reactivity组件内配置初始化<scriptsetup>//开发技术vue3piniatsimport{ref}from"vue";importAMapLoaderfrom"@amap/amap-jsapi-loa......
  • ubuntu设置终端代理
    修改bash的配置文件~/.bashrc增加两个函数#setproxyfunctionsetproxy(){ exporthttp_proxy=socks5://192.168.4.61:7890 exportHTTPS_PROXY=socks5://192.168.4.61:7890 exportFTP_PROXY=socks5://192.168.4.61:7890}#unsetproxyfunctionunsetproxy(){ unset......
  • es 常用命令
    1、查看es进程 ps-ef|grepes2.查看es索引curl-XGEThttp://xxx:port/_cat/indices?v3. 检查集群监控状态curl-XGEThttp://xxx:port/_cluster/health?pretty # 巡检结果及影响:status:集群状态:Green(正常);Yellow(备份数据不可用,不影响正常工作); Red(主备数据不可用,影......