iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实用小知识之对象间的比较
  • 630
分享到

Python实用小知识之对象间的比较

2024-04-02 19:04:59 630人浏览 泡泡鱼

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

摘要

目录前言场景代码里的收货地址了解__eq__方法实现扩展总结前言 今天就结合日常生活的例子,给大家讲讲python对象之间的比较。(内容不多,小娃儿都能看懂) 场景 米洛今年国庆节打

前言

今天就结合日常生活的例子,给大家讲讲python对象之间的比较。(内容不多,小娃儿都能看懂)

场景

米洛今年国庆节打算给新家添置一些日用的东西,比如床、四件套等等。为此,他使用了各大电商平台的app,但因为是新家,所以有些app还没有录入地址。

于是他干脆进行了一波整理,在他的收货地址里面,找寻自己是否添加过最新的地址。

我们都知道,收货地址最重要的就是地址+电话了,通过这个可以确定一个人。因为有些英雄美女喜欢把姓名写成: 喵星人,吴彦祖这样的,所以只要确保地址和电话对得上就行。

那我们就需要比较地址是否有重复的,这样就好好管理自己的收货地址嘛。

代码里的收货地址

我们定义一个Receiver类,里面有name/address/mobile3个字段:


class Receiver(object):

    def __init__(self, name, addr, mobile):
        self.name = name
        self.addr = addr
        self.mobile = mobile


if __name__ == "__main__":
    r = Receiver("小孟", "梅苑小区", 13922222222)
    r2 = Receiver("小孟货", "梅苑小区", 13922222222)
    print(r == r2)

这样我们的生活就映射到了代码之中。由于我们要比较,所以我们这边new了2个收货地址。

我们想要的是,当addr和mobile一致的时候,我们确定这2个收货地址相同。

来看看执行效果:

因为r和r2是2个不同的对象,所以他们是肯定不相等的。

思考: 如果是单例模式的class,r等于r2吗?

了解__eq__方法

我们知道,在Python里面比较数字/字符串是否相等,那2个对象是否相等。其实也是可以比较的。这一切都要归功于__eq__这个方法。

可以看到有个向上的箭头,这个代表子类重写了父类的方法。我们点击一下:

在我们比较2个对象的时候: r == r2, 实际上是执行了这样的方法:

不信咱们试试:

实现

熟悉了__eq__以后,我们问题就迎刃而解了。我们只需要在__eq__方法里面写上对应的判断方法即可。


class Receiver(object):

    def __init__(self, name, addr, mobile):
        self.name = name
        self.addr = addr
        self.mobile = mobile

    def __eq__(self, other):
        return self.addr == other.addr and self.mobile == other.mobile


if __name__ == "__main__":
    r = Receiver("小孟", "梅苑小区", 13922222222)
    r2 = Receiver("小孟", "梅苑小区", 13922222222)
    print(r == r2)

扩展

既然能够比较对象是否相等,那能否比较对象大小呢?那就等大家自己探索了,关键字:

lt, gt, ge, le

另外,还有__str__, __repr__, __hash__等方法,大家感兴趣也可以自己重写着玩玩。

总结

到此这篇关于Python实用小知识之对象间比较的文章就介绍到这了,更多相关Python对象的比较内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实用小知识之对象间的比较

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

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

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

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

下载Word文档
猜你喜欢
  • Python实用小知识之对象间的比较
    目录前言场景代码里的收货地址了解__eq__方法实现扩展总结前言 今天就结合日常生活的例子,给大家讲讲Python对象之间的比较。(内容不多,小娃儿都能看懂) 场景 米洛今年国庆节打...
    99+
    2024-04-02
  • Java数据结构之对象的比较
    目录元素比较基本类型的比较对象的比较对象如何进行比较覆写基类的equal基于Comparble接口类的比较基于比较器的比较集合框架中PriorityQueue(优先级队列)的比较方式...
    99+
    2024-04-02
  • python--初始面向对象:类的相关知识,对象的相关知识
    引子假设你是一个开发人员,现在需要你开发一款叫做当然很简单,两个角色,1个人物,1个boss,且人物和boss都有不同的技能,比如人物用觉醒技能秒了boss,掉了xx装备,boss用大招秒了人物,人物死亡,怎么描述这种不同的人物和他们的功能...
    99+
    2023-01-30
    相关知识 面向对象 对象
  • 【数据结构Java版】对象的比较之Comparable与Comparator比较器
    目录   一、基本类型的比较 二、对象类型的比较 (1)对象类型比较出现的问题 (2)重写基类equals方法 (3)基于Comparable接口的比较 1.实现Comparable接口,重写compareTo方法 (4)基于Compara...
    99+
    2023-09-06
    数据结构 比较 Comparable Comparator 算法
  • python实现时间的比较
    下面介绍下Python中比较两个日期大小的脚本. 在实际工作中用到,以供后续参考及备忘 时间区间比较函数 import time # 这里比较l_t...
    99+
    2023-01-31
    时间 python
  • 你知道 Python 对象和 NumPy 之间的区别吗?
    Python 对象和 NumPy 都是 Python 编程语言中非常重要的概念,但它们之间有一些区别。在本文中,我们将探讨 Python 对象和 NumPy 的区别,并介绍如何使用 NumPy 进行数据处理和科学计算。 Python 对象 ...
    99+
    2023-07-06
    对象 apache numy
  • Python面向对象之成员相关知识总结
    一、成员  1.1 变量 实例变量,属于对象,每个对象中各自维护自己的数据。 类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变...
    99+
    2024-04-02
  • python:面向对象的基本知识
    #类是现实世界或思维世界的实体在计算机中的反映 #它将数据以及这些数据上的操作封装在一起 # 属性-特征 # 方法(函数)-行为 # 构造函数-__init__() 初始化类的特征 构造函数是自动被调用的,...
    99+
    2023-01-31
    基本知识 面向对象 python
  • Python面向对象之内置函数相关知识总结
    Python内置函数 1. classmethod、staticmethod、property 。 上述三个内置函数在文章(Python进阶——面向对象之成员)的方法和属性中已经详细...
    99+
    2024-04-02
  • java中关于对象的实例比较分析
    本篇内容主要讲解“java中关于对象的实例比较分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中关于对象的实例比较分析”吧!同类型对象的比较三个维度去比较同一性相等性相似性样例引入想象...
    99+
    2023-06-26
  • ASP 框架对象和 Django:如何在两个框架之间进行比较?
    ASP框架对象和Django:如何在两个框架之间进行比较? 在现代Web开发中,框架是必不可少的工具。ASP框架和Django是两个非常流行的框架,它们都提供了强大的工具来简化Web开发。但是,它们之间的差异是什么?本文将介绍ASP框架对象...
    99+
    2023-11-11
    框架 对象 django
  • Python字典和列表性能之间的比较
    Python列表和字典 前面我们了解了 “大O表示法” 以及对不同的算法的评估,下面来讨论下 Python 两种内置数据类型有关的各种操作的大O数量级:列表 list 和字...
    99+
    2024-04-02
  • Java比较两个对象大小的三种方法详解
    目录一. 为什么需要比较对象二. 元素的比较1. 基本类型的比较 2. 引用类型的比较 三. 对象比较的方法1. equals方法比较2. 基于Comparabl...
    99+
    2024-04-02
  • 获取python对象占用空间的大小
    原文:http://stackoverflow.com/questions/449560/how-do-i-determine-the-size-of-an-object-in-python  import sys 函数原型:   s...
    99+
    2023-01-31
    对象 大小 空间
  • Python面向对象:杂七杂八的知识点
    为什么有这篇"杂项"文章 实在是因为python中对象方面的内容太多、太乱、太杂,在写相关文章时比我所学过的几种语言都更让人"糟心",很多内容似独立内容、又似相关内容,放这也可、放那也可、放这也不好、放那也不好。 所以,用一篇单独的文章来...
    99+
    2023-01-30
    知识点 面向对象 Python
  • python实战之德州扑克第三步-比较大小
    一、前言 经过前面的两篇文章,整体工作已经完成了2/3了,剩下的1/3,将会在本片文章提及 前面两步文章链接 python实战之德州扑克第一步-发牌 python实战之德州扑克第二步...
    99+
    2024-04-02
  • 全面掌握Python面试中的对象知识
    Python是一门高级编程语言,广泛应用于数据分析、人工智能、网络编程等领域。而在Python的面试中,对象知识是一个必须要掌握的领域。因此,本文将从对象的概念、类与实例、继承、多态等多个方面,全面掌握Python面试中的对象知识。 对象的...
    99+
    2023-09-24
    面试 对象 教程
  • Python面向对象的初级知识是什么
    Python面向对象的初级知识是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述面向过程:根据业务逻辑从上到下写垒代码函数式:将某功能代码封装到函数中,日后便无需重复编写...
    99+
    2023-06-04
  • JAVA 面向对象之多态的知识点有哪些
    本篇内容介绍了“JAVA 面向对象之多态的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 概念多态是面向对象程序设计(OOP...
    99+
    2023-07-02
  • 揭开 Python 和 Jython 之间的幕布:彻底比较
    Python 是一种流行的高级通用编程语言,以其语法简洁、功能丰富和广泛的库而闻名。Jython 是 Python 的 Java 实现,旨在在 Java 虚拟机 (JVM) 上运行 Python 代码。 兼容性 Jython 与 Pyth...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作