python判断对象是否是某一类型(Python判断对象是否相等及eq函数的讲解)
类别:脚本大全 浏览量:2882
时间:2022-01-21 00:02:52 python判断对象是否是某一类型
Python判断对象是否相等及eq函数的讲解摘要
- 什么是python对象的标识
- python对象相等的判断
- 自定义python对象相等的条件
python对象的标识
python对象标识就是python对象自身的要素,python对象主要有3要素:
- id:相当于对象在内存中的地址,相当于c的指针,可以用id(对象)来获取。
- 类型:python的基本对象有Number、String、List、Tuple、Set、Dictionary六种,当然还有对象的实例化,他们的类型就是对象的类名。可以通过type(对象)来获取。
- 值:对象的值,不解释- -。
对象相等的判断
python中的对象是否相等有两个层面,一个层面是是否是同一个对象,及在内存中是否共用一个内存区域,用is判断,另一个是对象的值是否相等,用==判断。
我目前用的最多的就是python对象的比较,即比较两个python对象是否相等,看个例子:
|
class student( object ): def __init__( self ,name,age,sex): self .name = name self .age = age self .sex = sex def __eq__( self , * args, * * kwargs): return object .__eq__( self , * args, * * kwargs) like = student( "like" , 25 , "male" ) xue = student( "xue" , 23 , "female" ) dong = student( "like" , 25 , "male" ) print (like is xue) #False print (like is dong) #False print (like = = dong) #False |
这里有两个student类的实例化对象,like和xue很明显是两个不同的对象,他们的不同体现在所占内存地址不同且对象的属性也不同。
like和dong虽然属性相同,但是is和==两种判断的结果也都为false,在实际情况中,我们大多都希望like和dong属性相同,就认为是同一个对象,所以我们需要重写类的eq方法:
|
class student( object ): def __init__( self ,name,age,sex): self .name = name self .age = age self .sex = sex def __eq__( self ,other): return self .__dict__ = = other.__dict__ print (like = = dong) #True |
调用一个对象的dict方法可以用字典的形式输出其属性列表,由于两个对象的属性相同,所以==运算为True。
自定义python对象相等的条件
当然在实际情况下,可以更灵活的定义两个对象相等的条件,比如名字一样就认为相等。
|
class student( object ): def __init__( self ,name,age,sex): self .name = name self .age = age self .sex = sex def __eq__( self ,other): return self .name = = other.name like = student( "like" , 25 , "male" ) dong = student( "like" , 23 , "female" ) print (like = = dong) #True |
实际场景
在实际应用中,有一个场景是处理对象是否在list里,不在就加入。
|
like = student( "like" , 25 , "male" ) dong = student( "like" , 25 , "male" ) list1 = [] list1.append(like) if dong not in list1: list1.append(dong) print ( len (list1)) #1 |
list的in操作就是通过==来判断是否在list中。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/lk7688535/article/details/80975688
您可能感兴趣
- Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】(Python HTML解析器BeautifulSoup用法实例详解爬虫解析器)
- python简单代码画图(python+pyqt5实现图片批量缩放工具)
- python网络爬虫案例实战(python爬取cnvd漏洞库信息的实例)
- python中什么是迭代器(一篇文章彻底搞懂Python中可迭代Iterable、迭代器Iterator与生成器Generator的概)
- python如何编写判断正负数程序(Python实现判断一个整数是否为回文数算法示例)
- pyqt5怎么在pycharm中安装(pycharm+PyQt5+python最新开发环境配置踩坑)
- python sql注入怎么避免(Python实现SQL注入检测插件实例代码)
- pythonselenium设置(解决Python selenium get页面很慢时的问题)
- python2.7连接sqlserver数据库(Python使用sqlalchemy模块连接数据库操作示例)
- python的opencv图片识别(OpenCV-Python 摄像头实时检测人脸代码实例)
- python怎么转换jar包(利用python脚本如何简化jar操作命令)
- python豆瓣电影爬虫课程设计报告(详解python 模拟豆瓣登录豆瓣6.0)
- python图书管理系统(python面向对象法实现图书管理系统)
- pythonexcel生成报表(python生成每日报表数据Excel并邮件发送的实例)
- python 队列与列表(Python实现的栈、队列、文件目录遍历操作示例)
- python中pip和pip3有什么区别(ISAPI-REWRITE伪静态规则写法以及说明)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
- 全椒人,你还记得吗 那年,那人,那网,那些我们的青春记忆(全椒人你还记得吗)
- 全椒人在苏州10周年联谊会在苏州举办(全椒人在苏州10周年联谊会在苏州举办)
- 这个全椒人被通报表彰,看看你认识吗(这个全椒人被通报表彰)
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
热门推荐
- mysql的innodb设置(修改MySQL数据库引擎为InnoDB的操作)
- 服务器的维护与管理(浅谈网站服务器的维护管理)
- mysql8.0.20安装教程图解(mysql 8.0.24 安装配置方法图文教程)
- dede织梦的后台如何调整和使用(织梦DEDECMS中增加父栏目调用,以及多级支持currentstyle的方法)
- windows下搭建docker私有仓库(使用docker compose安装harbor私有仓库的详细教程)
- 如何判别云服务器的优劣(选用云服务器的这四大风险必须知道)
- SQL Server作业活动监视器
- python中怎么连接mysql(python远程连接MySQL数据库)
- dedecms中修改图片(让dedecms织梦后台支持上传bmp格式的图片的教程)
- react代码展示(教你如何从 html 实现一个 react)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9