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中。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

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

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

相关文章

php+redis+设置前缀,spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)

标签:spring中自动加上 SimpleKey [] 解决方案一、自定义后缀名1、定义类实现KeyGenerator接口MyKeyGeneratorpackage com.wbg.springRedis.service.impl;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.stereotype.Compon…

gravity 时序图绘制,改

gmt gmtset FONT_TITLE 24,37gmt gmtset MAP_GRID_PEN_PRIMARY 0.5p,bluegmt gmtset FORMAT_DATE_IN yyyy-mm-dd FORMAT_DATE_MAP yyyy-mm set R-R2008-01-01\T/2017-05-31\T/-100/80set J-JX9i/6irem x轴格网间隔密度为3个月?gmt psbasemap %R% %J% -Bxa12O -Bya2…

php wdatepicker,WdatePicker时间控件的使用

1,引入js文件2,js代码function createTime(){WdatePicker({dateFmt:yyyy-MM-dd,minDate:2010-10-01,maxDate:2012-10-01});}3,html代码4,介绍这是最基本的使用方法,如需要增加或减少内容,可通过改变WdatePi…

python列表如何修改_如何在python中更改列表的字典中的值

for x in range(0, 5): ohlc_list[x] [open , high , low, close] 这并没有按照您的想法做.它为相同的4个列表创建5个引用,并将这些引用保留在不同的键下. 这可以用以下循环显示: for value in ohlc_list.values(): print([id(inner_list) for inner_list in value…

北京的林书豪,像一把小李飞刀

从《我要打篮球》节目开始,就一直在关注书豪的比赛,我喜欢书豪,书豪选择来CBA打球,也满足了很多球迷的愿望,近距离感受球星的那种状态,今天晚上,北京跟青岛的比赛,我是一分钟没有拉下…

20170706xlVBA城中村改造汇总

Public Sub GatherDataPicker()Application.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManualApplication.StatusBar ">>>>>>>>程序正在运行>>>>>>>>"On Erro…

php 循环队列,队列和循环队列-php数组

//实现基本队列class Queues{private $head;private $tail;private $cnt; //数组大小private $array [];public function __construct($n 5){$this->cnt $n;$this->head 0;$this->tail 0;}//数组实现队列public function basisEnQueue($val){//队列已满if ($this…

I2C和SPI注定要打一架

最近微信群里好几天聊到I2C,既然说到了I2C,那就有必要说SPI,那就一起说了算了,大家有更好见解的,留言回复下,让更多的人知道你的观点。整理与网络,侵删I2C和SPI应该要打一架?现今&am…

python opencv创建图像_OpenCV-Python 展示图像(1)

可以用 cv.imshow(winName, imgMat) 函数在窗口中显示图像。窗口大小会随着图像大小自动调整。 第一个参数是字符串类型,表示窗口名称,可以用不同的窗口名称来创建多个窗口。 第二个参数是要显示的图像数据。 cv.imshow(tmp_window, img) cv.waitKey(0) …

第1章 ssh命令和SSH服务详解

基础服务类系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远…

漫画:什么是区块链?

两年前,小灰以前写过一期关于区块链的漫画,可能很多新来的小伙伴还没有看过。最近趁着区块链重新成为热门话题,小灰把这篇漫画稍作修改,再次推送给大家。什么是区块链?区块链,英文 Blockchain,本…

php外卖系统源码单店,网上订餐系统 v3.1 单店版

系统以简单实用为主,系统的每一个功能都是实用的,像以很多网站为了好看把页面填的满满的,用户进来不知从何处操作起,我们的系统,一切了为了用户,为了网站经营者。我们所做的不仅仅是一个店铺展示系统&#…

python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!

菜鸟进阶高手,需要内外的修炼,外练招式,内修心法。招式有很多比如基本的函数,类,文件,模块,到并发,数据库的使用,再到一些框架的使用无论是爬虫的西瓜皮框架,…

web容器(02):tomcat配置监控

1、tomcat的目录结构 tomcat一般给Java应用的&#xff0c;apache一般给php应用的 bin文件夹(启动文件)&#xff1a; 配置监听之类的内容是在catalina.sh中加 conf文件夹(配置文件)&#xff1a; 2、server.xml配置文件说明 <Server port"8005" shutdown"SHUTD…

一般一个前端项目完成需要多久_制作分销小程序最快要多久

小猪V5分销小程序小编了解到&#xff0c;微商城及微分销搭建成为当下热门话题&#xff0c;下面从多个方面来谈谈快速制作电商小程序最快要多久。微信为小程序开放了超过60多个入口&#xff0c;比如有微信群聊入口、微信聊天主界面下拉、App分享信息卡片、发现栏小程序主入口、发…

apache php的日志在哪里,PHP在哪里存储错误日志? (php5,apache,fastcgi,cpanel)...

我在共享主机上&#xff0c;并由fastcgi运行Cpanel&#xff0c;Apache&#xff0c;PHP。 PHP在哪里存储错误日志&#xff1f;还有什么其他方法可以在共享主机环境中找到错误日志&#xff0c;而不必遍历整个站点结构来查找error_log文件&#xff1f;我可以访问php.ini (我使用的…

那些有趣的电子漫画合集

素材来源&#xff1a;芯片之家同事调电路连续通宵两个晚上&#xff0c;结果。。。坐着我的芯片靠椅&#xff0c;剪个帅帅的光头。更多电子漫画合集&#xff1a;转自&#xff1a;长按识别图中二维码关注—————END—————扫码或长按关注回复「加群」进入技术群聊

vim 常用快捷键总结

键盘移动 (Move) 一切都从键盘的移动k -> 上 upj -> 下 downh -> 左 leftl -> 右 rightz -> 重画屏幕&#xff0c;当前光标变成屏幕的第一行 (redraw current line at top of window)CTRL-f -> 跳到下一页 (page down)CTRL-b -> 跳到上一页 (page up) 跳跃…

vim nerdtree 标签_7款vim插件

作者&#xff1a;QvQ链接&#xff1a;https://zhuanlan.zhihu.com/p/145793963来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09…

单片机怎么学?

—————END—————扫码或长按关注回复「 加群 」进入技术群聊