Python学习记录 重写__str__()方法

深入解析 Python 的 __str__() 方法重写 ​​ 方法用于定义对象的“非正式”字符串表示,通过重写它,可以让对象在打印或进行字符串转换时返回更具可读性的内容。结合其他方法如 ​​,可以提供适合不同上下文的输出。重写 ​​ 方法不仅能提升程序的可读性,还有助于调试和记录日志。 阅读详情

2022.08.16 DAY32

重写_str_()方法

  • object有一个_str_()方法,用于返回一个对于“对象的描述”,对应于内置函数str()经常用于print()方法,帮助我们查看对象的信息。
  • _str_()可以重写。

代码示例:

class Person:  # 默认继承object类
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "名字是{0},年龄为{1}".format(self.name, self.age)


def test():
    p = Person("YJP", 21)
    print(p)


if __name__ == "__main__":
    test()

运行结果:

名字是YJP,年龄为21

多重继承

  • Python支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父类的特点”。
  • 类的整体层次结构会异常复杂,尽量避免使用。

MRO()

  • Python支持多继承,在父类中有相同名字的方法,在子类中没有定义父类名时,解释器将从左到右按顺序搜索。
  • MRO(Method Resolution Order):方法解释顺序。
  • 通过MRO()方法获得“类的层次结构”,方法解释顺序也是按照“类的层次顺序”寻找的。

super()获得父类定义

  • 子类通过super()获取父类的方法。
  • super()代表父类的定义,不是父类对象。

代码示例:

class A:

    def say(self):
        print("A:", self)


class B(A):

    def say(self):
        # A.say(self)
        super().say()
        print("B:", self)


def test():
    B().say()


if __name__ == "__main__":
    test()

运行结果:

A: <__main__.B object at 0x000001465ED01D00>
B: <__main__.B object at 0x000001465ED01D00>
Python面向对象编程:精雕细琢对象的“名片”——重写 `__str__()` 和 `__repr__()` 方法 _str__()和__repr__()方法是Python中非常重要的特殊方法,它们用于定义对象的字符串表示形式。正确地重写这两个方法可以提高代码的可读性、调试效率和用户体验。在实际开发中,我们应该养成良好的习惯,同时重写__str__()和__repr__()方法,并遵循最佳实践,使我们的代码更加清晰、易懂和易于维护。希望本文能够帮助读者更好地理解和应用这两个方法。 阅读详情

相关推荐

django之二十--python3中的特殊方法【__str__】的作用

一、前言 我们在django里创建一个模型类时经常在模型类里使用这个【__str__】特殊方法,但刚接触这个特殊方法的人肯定都理解不了这个特殊方法能实现什么作用。 所以我们必须知道这个特殊方法【__str__】如何使用。 特殊方法【__str__】的相关知识点: ①.【__str__】是python3里的其中一个特殊方法。 ②.【__str__】特殊方法一般是用于返回自己定义的返回值(返回值默认是对象的描述)。 ③.【__str__】特殊方法的返回值的数据类型只能为字符串。 二、【__s.

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 1573

Python - 单继承(__str__+__repr__)

# MRO: method resolution order 方法解析顺序 # solute 溶质 # solution 溶液、解决方案 # resolute 坚决的、果断的 # resolution 解决、解析 # string 字符串 # represent 代表、表示 # reproduce 复制、再生 Example: #可以省略括号,也可以加上括号,也可以在括号中加入Obje...

⚡ 1004

芯片设计新手必看:5分钟搞懂工艺角(Process Corner)到底是什么,为啥仿真总要用它?

本文详细解析了芯片设计中的工艺角(Process Corner)概念及其在仿真中的重要性。通过类比马拉松运动员的性能差异,解释了晶体管制造过程中的天然波动,并介绍了TT/FF/SS等工艺角代码的含义。文章还探讨了为何需要跑全工艺角仿真,以及现代芯片验证的完整流程,包括PVT矩阵和多模式分析(MMMC),帮助芯片设计新手快速掌握这一关键概念。

weixin_28713947的博客 246

【Python学习】类的继承与重写

Python中的继承和方法重写

weixin_73348410的博客 1656

FreeSWITCH编译安装详细文档

本文档详细介绍了在Ubuntu 22.04系统上从源码编译安装FreeSWITCH的完整流程。主要内容包括:1)系统环境准备和依赖库安装;2)关键依赖库spandsp和sofia-sip的编译安装;3)FreeSWITCH源码的特定版本(v1.6.0)编译配置,包括禁用SignalWire模块的配置方法;4)系统服务配置,包括创建专用用户、设置权限以及配置systemd服务文件。文档特别提供了版本控制说明,确保后期能切换到相同的版本环境,并附有详细的命令操作步骤和注意事项。

唯有代码让我痴狂 1369

S.BUS协议及编解码,C语言源码

1、简介 SBUS本质是一种串口通信协议,采用100K的波特率,8位数据位,两位停止位,偶效验,即8E2的串口通信。 值得注意的有三点: 1.SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反(注意,一定要硬件取反),电路如下 这是我在网上看资料时看到的电路,实际上我用的是下面这个电路 2.SBUS有两种模式, a.高速模式:每4ms发送一次 b...

qq_31232793的博客 1万+

Python入门基础篇 No.19 —— 可变字符串_io.StringIO

Python入门基础篇 No.19 —— 可变字符串_io.StringIO 文章目录Python入门基础篇 No.19 —— 可变字符串_io.StringIO前言一、可变字符串总结 前言 一、可变字符串 在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO对象或 array 模块。 代码演示: >>> import io >>> x

成长的Offer 829

芯片设计流程中的def文件

在实际的DEF文件中,每个部分都包含了与实际设计相关的详细信息,这个模板只展示了每个部分的基本结构。在实际应用中,DEF文件通常由EDA(电子设计自动化)工具在完成布局(Placement)和布线(Routing)步骤后自动生成,在集成电路设计中,DEF(Design Exchange Format)文件的模板具体内容会依设计的复杂性和特定需求而变化。简而言之,LEF文件提供了单元的物理特性和规则,而DEF文件使用这些规则来确定单元。)文件描述了特定设计中所有物理元素的精确放置和连线信息。

qq_36045093的博客 4862

python方法重写说法正确的是_python-面向对象-20-重写__str__方法/__repr__方法

1.基本介绍object类有一个__str__()方法,用于返回一个"对象的描述",对应于内置函数str(),经常用于print()方法,帮助我们查看对象的信息。因为__str__()默认在object类中定义,所以子类可以重写这个方法。不同语言中对应的不同的方法名:Python语言: __str__()方法JAVA语言:toString()方法PHP语言:__toString()方法2.方法定义...

weixin_39609503的博客 312

16、Arduino MEGA 2560 固件与电路详解

本文详细介绍了Arduino MEGA 2560的固件编程与电路设计,涵盖ATmega16U2和ATmega2560的熔丝配置、stk500v2引导加载程序的备份与恢复方法、使用Microchip Studio通过ICSP烧录固件的步骤,以及debugWIRE和JTAG调试接口的选择与配置。同时提供了电路块图解析、组件位置参考及常见问题解决方案,帮助用户深入理解硬件结构并进行高效开发与调试。

swift5iosmith的博客 194

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。

charce_you的专栏 914

python 重写__str__() 方法

默认print __init__ 输出的默认情况下,是输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址 # 重写object的__str__() class Student: # 默认继承object类 def __init__(self,name): self.name = name p = Student("小明") print(p) 当使用print输出对象的时候,若定义了__str__(self)方法,打印对象时就会从这个方法中..

人生苦短,何妨一试 1257

10、智慧变电站 - 加载vue大屏元素(整体效果)

这一篇文章非常简单,但是也非常出效果阅读前面几篇文章,都可以看到有顶部、左侧、右侧的面板,主要我不会录gif图片,大屏元素面板还有一些动态加载的效果。 vue的transition标签 Vue 提供了 transition 的封装组件,可以给任何元素和组件添加进入/离开过渡;在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active 、v-enter-to 、v-leave 、v-leave-active 、v-leave-to。我们正好使用这个特性来达到面板进入

github_39988036的博客 1040

Python中的魔法方法__repr__和__str__详解

当我们直接打印一个python类对象时,得到的通常是类似“”这样一段字符,无法获得对象的具体状态。这个时候我们就可以重新定义/重写对应类的魔术方法__repr__和__str__,使得我们在打印对象时能够获得对象的当前状态信息。

gemingxuan的博客 3587

基于深度学习的涂胶缺陷类型检测:数据集处理与YOLOv8模型实现

本文提出了一种基于YOLOv8深度学习的涂胶缺陷检测系统,针对断胶、溢胶、缺胶、气泡及胶条宽度异常等常见缺陷类型,实现了从数据采集到模型部署的完整解决方案。系统采用工业相机采集涂胶图像,通过多形态数据增强策略解决样本稀缺问题,利用YOLOv8框架实现高效检测。相比传统人工目检和规则式机器视觉方法,该系统在检测精度(mAP达97.5%)和实时性(单图检测耗时0.038秒)方面表现优异,可满足智能制造场景下的涂胶质量检测需求。

huanghm88的专栏 271

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python之 面向对象(self、init方法、str方法、del方法、私有、继承、重写)

文章目录一. 面向对象-基础1. 概念介绍2. 面向对象的基本实现 (重点)在这里插入图片描述在这里插入图片描述3. self (重点)4. init方法(重点)在这里插入图片描述5. str方法6. 万物皆对象在这里插入图片描述7. 案例-搬家具二. 面向对象-高级1.del2. 私有3. 继承 (重点)4. 重写(重点)5. 调用被重写的方法 (重点) 一. 面向对象-基础 1. 概念介绍 ...

limy_liu的博客 726

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Python】面向对象之self,init,str,del,私有,继承,重写,调用被重写的方法及基本实现

文章目录一, 面向对象2. 面向对象的基本实现3.self4.init方法5.str6.万物皆对象7.案例-搬家具二, 面向对象1.del2.私有3.继承4. 重写5.调用被重写的方法 一, 面向对象 概念介绍 面向过程:按照业务逻辑来实现程序 面向对象编辑:将程序的功能和记录的数据转换为某个事物(对象的)特征和行为,从事物的角度进行程序开发 优点:可以让程以对象为单位进行开发,提高团队的...

m0_46066407的博客 508

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python中int转str的本质:类型系统与显式转换原理

在Python中,整数(int)与字符串(str)的交互并非简单的‘拼接’问题,而是类型系统强制显式转换的核心体现。Python拒绝隐式类型转换,要求开发者明确表达数据意图,这构成了其可读性、可维护性与类型安全的底层基础。理解str()、f-string、.format()和%格式化的原理差异,有助于在日志、API、路径构造等场景中做出性能与语义兼顾的技术选型。尤其在现代Python(3.8+)工程实践中,f-string的编译期优化与pydantic等类型驱动框架的协同,正将int到str的转换从零散操作

weixin_33976072的博客 681

Python 内置函数:repr()

与 str() 不同,repr() 返回的字符串主要面向开发者和调试场景,强调精确性和可复现性,通常格式更接近 Python 代码,并且在可能的情况下可以用 eval() 还原为原对象(需确保安全性)。若对象同时定义了 __str__() 和 __repr__(),调用 repr() 时始终使用 __repr__()并非所有对象的 repr() 都能被 eval() 完全还原(尤其是涉及外部资源的对象)为了让 repr() 输出更有意义,可以在自定义类中重写 __repr__() 方法。

qq_41176800的博客 1174

学习记录_Python面向对象

学习记录 日期:2021年9月4日 学习内容python中类成员的继承和重写python中的object类python重写__str__方法python中类的多重继承python中的mro()方法python中_super获得父类的定义python中的多态 python中类成员的继承和重写 #测试 class Person: def __init__(self,name,age): self.name = name self.__age = age #私有属性

weixin_44578760的博客 130

Python进阶 - 类的内置方法 __str__ 自定义对象打印格式

📝 Python类中__str__方法:让对象打印更友好 本文介绍了Python中__str__方法的作用与使用方法: 核心作用:自定义对象被打印时的字符串表示 基础语法:在类中定义__str__(self)方法并返回字符串 实际应用示例:学生类、银行账户类的友好打印实现 与__repr__的区别:前者面向用户展示,后者面向开发调试 继承中的表现:可通过super()调用父类实现并扩展 执行流程:print()会优先调用__str__,若无则调用__repr__ 通过合理使用__str__方法,可以显著提

千淘万漉虽辛苦,吹尽狂沙始到金 8155

python学习记录05

python学习记录05

weixin_42348856的博客 574

python第四十二课——__str__(self)函数

4.__str__(self):作用:创建完对象,直接打印对象名/引用名我们得到的是对象的内存信息(十六进制的地址信息),这串数据我们程序员并不关心,我们更希望看到的是属性赋值以后的内容(属性赋值的检测),那么我们就可以认为显示的重写__str__函数,来实现属性内容的返回显示【注意】:此函数必须有返回值,而且return后只能接受字符串数据 class Person: def _...

weixin_30407613的博客 606

python自学记录

new方法的使用案例 -> 打开的界面不能重复打开,只能使用一块内存不能开辟副本。__str__通过打印函数或者str()函数 的时候自动触发。new方法重写 init 注意重写后需要返回使init接收。通过 hasattr 等反射方法将函数名称 获取为字符串。—del__只有对象被完全释放的时候,才执行。

ldxldx777的博客 242

python学习记录10~

本文总结了Python面向对象编程中的关键概念,包括类方法、静态方法、实例方法的区别与使用场景,重点讲解了单例模式的四种实现方式(特别是通过重写__new__()方法),介绍了常用的魔法方法(如__str__、__call__等)的功能,并简要说明了文件读写的基础操作。内容涵盖了类属性访问控制、对象初始化流程、特殊方法的应用等核心知识点,为Python面向对象编程提供了实用参考。

sometime_smile的博客 886

学习python的第十五天

1.类传递参数 import self as self class Person: def __init__(self, name, age): """ init 魔术方法在实例化对象的时候触发 self = 类的对象 """ print("init被触发") # 定义对象属性 self.name = name self.age = age # 定义一个

qweradf333的博客 1027
上一篇: Python学习记录 面向对象
下一篇: Python学习记录 多态及特殊方法和运算符的重载
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值