gpt4 book ai didi

Python判断对象是否相等及eq函数的讲解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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对象是否相等,看个例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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方法:

?
1
2
3
4
5
6
7
8
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对象相等的条件 。

当然在实际情况下,可以更灵活的定义两个对象相等的条件,比如名字一样就认为相等.

?
1
2
3
4
5
6
7
8
9
10
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里,不在就加入.

?
1
2
3
4
5
6
7
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判断对象是否相等及eq函数的讲解的文章就讲到这里了,如果你想了解更多关于Python判断对象是否相等及eq函数的讲解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com