iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中对象相等判断(is、==与
  • 249
分享到

python中对象相等判断(is、==与

对象python 2023-01-31 07:01:51 249人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

之前转载过一篇有关java的equals与==差别的文章(详见Http://blog.csdn.net/xiaohukun/article/details/78439580) 最近学习python的时候又看到了这个运算符,于是便

之前转载过一篇有关java的equals与==差别的文章(详见Http://blog.csdn.net/xiaohukun/article/details/78439580)
最近学习python的时候又看到了这个运算符,于是便了解了一下Python中对象比较相关的知识,特此分享。(根据python版本不同可能会有些许不同)

一、对象的要素

python中对象包含三个基本要素,分别是:

  • id(身份标识) 可以理解为c里面的指针或内存位置
  • type(数据类型)
  • value(值)

例1

>>>a1=1
>>>a2=1
>>>print(id(a1))
140611277590096

>>>print(id(a2))
140611277590096

>>>a1=[1,2]
>>>a2=[1,2]
>>>print(id(a1))
4477835456

>>>print(id(a2))
4477833512

>>> class test:
...     def __init__(self,s):
...             self.s=s
...
>>> t1=test("hello")
>>> t2=test("helo")
>>> print(id(t1))
4511016936
>>> print(id(t2))
4511017008

可以看出,number和string在赋值时,对于同一值不重新分配内存,所以同一个值id相同。
而其他数据类型(包括自定义类)在每次赋值时都会为每一个对象开辟一个新内存予以存储,所以id不同。

二、==与is的使用

例2

>>>a1=1
>>>a2=1
>>>print(a1==a1)
True

>>>a1=[1,2]
>>>a2=[1,2]
>>>print(a1==a2)
True

>>>print(a1 is a2)
a2

t1=test("hello")
t2-=test("hello")
print(t1==t2)
False

print(t1 is t2)

==用于判断数值是否相等,因此对于六大基本数据类型而言,相同的值即可判定相等。而对于其他类的实例化对象而言,存储和比较的可以认为是内存地址或者id,因此此时即使拥有相同属性也会因为id不同而被判定为不相等。
is,这是用于直接比较二者的地址是否相同

也就是是说java中的equals与==,类似于python中的==与is

三、__dict__的使用

我们知道java中可以通过重写类equals的方法实现类对象的属性相等判断,可是python中并没有这样的函数,除了自定义equals函数有没有其他方便的实现方式呢?

利用python中的属性dict可以实现
例3

class test:
    clsvar=1
    def __init__(self,invar):
        self.invar=invar
print(test.__dict__)
输出:{'clsvar': 1, '__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x100aecf50>}

t1=test(1)
t2=test(1)
print(t1.__dict__)
输出:{'invar': 1}

print(t1==t2)
输出:False

print(t1.__dict__==t2.__dict__)
输出:True

其中clsvar称之为类变量,invar称之为实例变量
python中__dict__ 是一个字典,键是属性名,值为属性值。
Python的实例有自己的dict,它对应的类也有自己的dict (但是有些特殊的对象是没有dict属性的,这里不做讨论)

当打印类的dict属性时,列出了类所包含的属性,包括一些类内置属性和类变量clsvar以及构造方法init

而实例变量则包含在实例对象t1的dict属性中,利用这一点可以很容易实现比较t1和t2的实例变量是否相同。

既然谈到了 __dict__,那就稍微介绍一下它的规则:

一个对象的属性查找顺序遵循首先查找实例对象自己,然后是类,接着是类的父类。
例4

#实例先检查对象自身
t1.clsvar=10
print(test.clsvar)
输出:1

print(t1.clsvar)
输出:10

#没类对象先检查类自身
test.clsvar=20
print(test.clsvar)
输出:20

print(t1.clsvar)
输出:10

print(t2.clsvar)
输出:

#给类和实例中未定义的变量赋值
test.m=5
t1.x=5
print(test.m)
print(t1.x)
输出:5,5

t3=test(1)
print(t3.m)
输出:5

print(t3.x)
报错:AttributeError: test instance has no attribute 'x'

最后附上一个将字典转换成对象的小技巧,如果我们有一个字典如下:

dict={"a":1,
     "b":2,
     "c":3}

现在想将其转换为一个对象,通常会这样写:

class test:
    def __init__(self,dict):
        self.a=dict['a']
        self.b=dict['b']
        self.c=dict['c']

但是在了解了dict属性之后可以这样写:

class test:
    def __init__(self,dict):
        self.__dict__.update(dict)

update可以将实例对象的变量换为dict所含的变量与值,这里是全部替换,即使原来定义了一个实例变量x,update之后该变量也将不存在

--结束END--

本文标题: python中对象相等判断(is、==与

本文链接: https://www.lsjlt.com/news/191242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中对象相等判断(is、==与
    之前转载过一篇有关java的equals与==差别的文章(详见http://blog.csdn.net/xiaohukun/article/details/78439580) 最近学习python的时候又看到了这个运算符,于是便...
    99+
    2023-01-31
    对象 python
  • Python判断相等
    判断相等方法有好几个:== 、is 、 isinstance 、issubclass 、operator 模块。 == :两个对象内容是否相等。 >>> a = [22,44]>>> b = [22,4...
    99+
    2023-01-30
    Python
  • es6中如何判断两个对象是否相等
    本篇内容介绍了“es6中如何判断两个对象是否相等”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 在Java中判断两个Long对象是否相等
    抛出问题: Long a = 4l; Long b = 4l; a == b //true Long a = 128l; Long b = 128l; a == b //f...
    99+
    2024-04-02
  • 为什么Java中都不用a.equals(b)判断对象相等
    今天也是向高级程序员学习的一天。组长又说了我用a.equals(b)判断对象相等的问题,一开始我还很奇怪,不都这么用吗 组长:“……” 嗷嗷,原来是这样,那该用什么呢? 组长:“……...
    99+
    2024-04-02
  • js中判断两个数组对象是否完全相等
    目录js判断两个数组对象是否完全相等js判断两个对象是否相等的办法,包含绝对相等和形状内容相等总结js判断两个数组对象是否完全相等 如何判断两个数组是否完全相等,如何判断两个对象是否...
    99+
    2023-05-16
    js判断数组 js判断数组对象 判断数组对象是否相等
  • Java如何判断两个Long对象是否相等
    这篇文章主要介绍“Java如何判断两个Long对象是否相等”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何判断两个Long对象是否相等”文章能帮助大家解决问题。抛出问题:Long ...
    99+
    2023-06-17
  • 在Java中怎么判断两个Long对象是否相等
    这篇文章主要介绍“在Java中怎么判断两个Long对象是否相等”,在日常操作中,相信很多人在在Java中怎么判断两个Long对象是否相等问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Java中怎么判断两个L...
    99+
    2023-06-20
  • java如何判断两个对象的值是否相等
    在Java中,要判断两个对象的值是否相等,需要使用对象的equals()方法。equals()方法是Object类的方法,所有的Ja...
    99+
    2023-08-16
    java
  • 在JS中判断两个对象是否相等方法详解
    目录严格相等运算符 (===)对象属性的比较使用 Lodash 等工具库判断两个对象是否相等JSON.stringify 方法使用 Object.is() 方法严格相等运算符 (==...
    99+
    2023-05-19
    js判断 js判断对象 判断对象是否相等
  • java为什么不建议用equals判断对象相等
    目录一,值是null的情况:二,值是空字符串的情况:三,源码分析1.源码2.说明四,“a==b”和”a.equals(b)”有什么区别...
    99+
    2023-03-01
    java equals判断对象相等 java equals对象相等
  • Python 文本和数字相等判断
    文本和数字相等判断 虽然数字的字符串值被认为与整型值和浮点型值完全不同,但整型值可以与浮点值相等。Python 进行这种区分,因为字符串是文本,而整型值和浮点型都是数字。 1. example 1 Microsoft Windows [...
    99+
    2023-01-31
    数字 Python 文本和
  • python中判断两个值不相等的符号
    python中判断两个值不相等的符号是“!=”,还可以使用is not进行判断,如果需要判断两个两个值是否相等则使用“==”运算符或者is来判断即可。具体使用步骤:打开python编辑器,新建一个py文档。在py文档中执行以下示例代码进行判...
    99+
    2024-04-02
  • java不建议用equals判断对象相等的原因是什么
    这篇文章主要介绍“java不建议用equals判断对象相等的原因是什么”,在日常操作中,相信很多人在java不建议用equals判断对象相等的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java不...
    99+
    2023-07-05
  • java中string类如何判断相等
    在Java中,String类有两种方法可以用来判断字符串是否相等:1. 使用equals()方法:这是String类提供的用于比较两...
    99+
    2023-10-18
    java
  • jquery如何判断对象是否相同
    本篇内容介绍了“jquery如何判断对象是否相同”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Python中如何判断两个列表是否相等
    Python中如何判断两个列表是否相等,需要具体代码示例在编程中,经常会遇到需要判断两个列表是否相等的情况。Python提供了几种方法来实现这个判断,下面将详细介绍这些方法并给出具体的代码示例。方法一:使用“==”运算符Python中的列表...
    99+
    2023-10-22
    列表相等判断
  • js中isSame判断对象是否相同的方法
    这篇文章给大家分享的是有关js中isSame判断对象是否相同的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、isSame判断一个moment对象是否和另一个moment对象相同。moment('2...
    99+
    2023-06-15
  • Python判断对象是否是functio
    在Python中,判断一个对象是否是方法有如下三种方法。 1. 根据“__call__”属性判断 有时候用python就有这么一种感悟,各种钩子函数就是通过内置的“__”属性实现,python学得好不好,就是对“__”属性理解得透...
    99+
    2023-01-31
    对象 Python functio
  • Python中DataFrame怎么判断两列数据是否相等
    数据准备import numpy as np import pandas as pd import json import psycopg2 data = { 'A':[1,2,3,4,'hello'...
    99+
    2023-05-19
    Python dataframe
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作