【每日一练】python类的构造方法以及常用的魔术方法详细讲解

在Python中,构造方法是一个用来初始化新创建的对象状态的特殊方法。Python中的构造方法是__init__。此外,Python中的"魔术方法"是Python提供的一系列特殊方法,它们都以双下划线开头和结尾,例如__init____str____repr____add____getitem__等。

以下举例常见的魔术方法

"""
本节学习内容
掌握常用的类内置方法:类内置方法各有各的特殊功能,称之为魔术方法
1.构造方法 :__init__
2.字符串方法 :__str__
3. 小于 大于符号比较: __lt__
4.小于等于,大于等于符号比较:__le__
5.相等符号判断 :__eq__
"""#一.构造一个初始值方法
class Csrt:def __init__(self,name,age,dh):self.name=nameself.age=ageself.dh=dh#--字符串方法def __str__(self):return f"姓名:{self.name},年龄:{self.age}"# --小于大于比较方法: __lt__该方法必须传入一个otherd参数def __lt__(self,other): #该参数含义:另一个对象return self.age < other.age #该句含义:一个对象与另一个对象作比较#小于等于,大于等于比较:__le__  (其用法和__lt__一样的用法)def __le__(self, other):return self.age <=other.age#相等比较运算符:__eq__,比较两边是否相等def __eq__(self, other):return self.age==other.agereturn self.name==other.namema1=Csrt("周结轮",35,138)
ma2=Csrt("张雪友",38,130)
ma3=Csrt("李连结",32,136)
ma4=Csrt("林志赢",32,135)
print(ma1)  #输出: 姓名:周结轮,年龄:35
print(ma2)  #输出:姓名:张雪友,年龄:38
#PS:如果不用__str__方法,输出的是一个内存地址:<__main__.Csrt object at 0x0000020F481B96A0>#__lt__比较方法输出结果:
print(ma1<ma2)  #输出:True 因为35是小于38
print(ma1>ma2)  #输出:False 因为35不小于38
print(ma1<ma2<ma3) #输出:False 因为35小于38,但38不小于32#__lt__比较方法输出结果:
print(ma1<=ma2) #输出:True
print(ma1>=ma2) #输出:False#__eq__比较方法输出结果:
print(ma3.age==ma4.age) #输出:True
print(ma3==ma4)    #输出:也是True,因为只要有一个相等 就返回True
print(ma3.name==ma4.name) #输出:False
print(ma3.age==ma4.age and ma3.name==ma4.name and ma3.dh==ma4.dh ) #输出:False
#PS:不使用__eq__作比较时程序不会报错,但判断的其实是内存地址,并非数值对比
是不是很有意思,动手试一试吧
-----------类中其实还有很多这种魔术方法,这里就不一一介绍,随后用的时再作详细讲解-----------
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis系列命令更新--Redis列表命令

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;说明&#xff1a;Redis Blpop命令移出并获取列表的第一个元素&#xff1b;如果列表没有元素会阻塞列表直到等到超时或发现可弹出元素为止 &#xff08;2&#xff09;语法&#xff1a;redis 127.0.0.1:63…

mybaits-plus自定义分页查询

1. 引入依赖 在 pom.xml 文件中添加必要的依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId&…

Git进阶(十四):Windows下 git 提示 Repository not found

文章目录 一、前言 一、前言 在Windows10下执行 git clone/pull 的时候出现Repository not found错误。解决方法如下&#xff1a; 打开控制面板 搜索“凭据” 选中“Windows凭据” 在“普通凭据”一栏中查看当前git服务器配置的凭据信息是否正确&#xff0c;出现以上问题的…

081、Python 关于方法重写

所谓方法重写&#xff0c;就是子类对父类已有的方法&#xff0c;重新编写自己的实现版本&#xff0c;这个过程就叫做方法重写&#xff08;override&#xff09;。 说到方法重写&#xff0c;就不得不提多态。因为方法重写是实现多态的一种重要方式。 所谓多态&#xff0c;就是…

Windows的包管理器Chocolatey

Chocolatey 是 Windows 平台上的一个软件包管理工具&#xff0c;类似于 Linux 上的 apt、yum 或者 macOS 上的 Homebrew。你可以通过命令行快速安装、更新和卸载软件包。 一、安装 Chocolatey 查看是否有安装 choco --version 2.3.0如果有显示版本号&#xff0c;说明安装成功…

Laravel IDE Helper:开发者的代码导航灯塔

Laravel IDE Helper&#xff1a;开发者的代码导航灯塔 在Laravel开发过程中&#xff0c;IDE&#xff08;集成开发环境&#xff09;的辅助工具可以极大地提高开发效率和代码质量。Laravel IDE Helper是一个专门为此目的设计的工具&#xff0c;它为PHP IDE提供了额外的上下文信息…

提高自动化测试脚本编写效率 5大关键注意事项

提高自动化测试脚本编写效率能加速测试周期&#xff0c;减少人工错误&#xff0c;提升软件质量&#xff0c;促进项目按时交付&#xff0c;增强团队生产力和项目成功率。而自动化测试脚本编写效率低下&#xff0c;往往会导致测试周期延长&#xff0c;增加项目成本&#xff0c;延…

Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd local wget https://www.python.org/ftp…

git 提交远程仓库 方式

第一种方式&#xff1a; git init //初始化 gitgit clone https://github.com/luckygilrhpp/gitTest.git //克隆远程仓库代码将要提交的文件夹复制到这个clone的远程仓库里面 第二种方式&#xff1a; git init git remote add origin https://github.com/lucky…

高性能存储 SIG 月度动态:优化 xfs dax reflink 时延,独立选型并维护 mdadm 和 ledmon

本次高性能存储月度动态综合了 SIG 在 5、6 两个月的工作进展&#xff0c;包含多项特性支持&#xff0c;性能优化&#xff0c;以及 Bugfix 等。 01 SIG 整体进展 引入 xfs deferred inode inactivation&#xff0c;进一步优化 xfs dax reflink 过程中的抖动时延。 Intel 将在…

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能&#xff0c;我们在游戏中经常会见到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;当玩家走进时碎石自动吸附合并变成一条路&#xff0c;或者一些装饰性的物件做随机运动等等&#xff0c;在引擎没有集成运动图形时&#xff0c;这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点&#xff1a; 动态类型&#xff1a; JavaScript是一种动态类型语言&#xff0c;变量可以存储任意类型的数据&#xff0c;无需事先声明变量的类型。事件驱动&#xff1a;JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

group by 与 distinct去重性能

GROUP BY和DISTINCT在数据库查询中都可以用于去重&#xff0c;但它们的性能差异取决于多个因素&#xff0c;包括数据集的大小、数据库的结构和索引、以及查询的具体内容。 处理方式&#xff1a; DISTINCT&#xff1a;它会扫描整个数据集&#xff0c;然后删除重复的记录&#xf…

机体坐标系和导航坐标系

目录 机体坐标系&#xff08;Body Frame&#xff09;例子&#xff1a;无人机的机体坐标系 导航坐标系&#xff08;Navigation Frame&#xff09;例子&#xff1a;地球固定的导航坐标系 具体例子说明机体坐标系描述导航坐标系描述 总结 机体坐标系&#xff08;Body Frame&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

Vue 接口用FormData() 提交数据

例子&#xff1a; let data { id: 12, name: 测试, list: [{ id: 22, name: "za", age: 12 }] };// 创建 FormData 实例 要使用 FormData 将数据提交给接口&#xff0c;首先需要了解 FormData 是如何工作的。FormData 是一种用于异步上传数据的表单数据结构&#xf…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展&#xff1a;for循环的初始化&#xff0c;判断&#xff0c;…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站&#xff1a; Font Awesome&#xff0c;一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意&#xff0c;要用框架启动&#xff0c;但用html启动的话是用不了的&#xff08;图标启动不了&#xff09; 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行&#xff0c;为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1&#xff09;利益相关方: 应识别利益相关…