python魔术方法的学习

判断是否为可迭代对象

from collections.abc import Iterableobj = [1, 2, 3]  # 替换为你要判断的对象
if isinstance(obj, Iterable):print("这是一个可迭代对象")
else:print("这不是一个可迭代对象")

_next_

是 Python 中迭代器对象的一个方法,用于获取下一个元素。
当使用迭代器进行迭代时,通过调用 __next__ 方法可以依次获取迭代器中的元素,
直到没有更多元素可获取时,会引发 StopIteration 异常。

产生生成器的方法:

  1. 使用函数和 yield 关键字**:在函数中使用 yield 语句来定义生成器。
  def func()...yield
  1. 列表推导式**:可以通过在列表推导式中使用 yield 来创建生成器。
    gen = (i for i in range(5))
    generator就是生成器
    1. next():获取生成器中的下一个元素。
    2. send(value) :向生成器发送一个值,并继续执行生成器函数到下一个 yield 语句。
    3. throw(type, value=None, traceback=None):在生成器内部抛出异常。
    4. close():关闭生成器,后续再调用 __next__() 会引发 StopIteration 异常。
    5. 协程:
      执行过程中暂停和恢复,允许在一个函数内部实现多个任务的协作执行。协程通过yield关键字或特定的协程库来实现。

Python 的可迭代对象:

  1. 列表(List)
  2. 元组(Tuple)
  3. 字符串(String)
  4. 字典(Dictionary)
  5. 集合(Set)
  6. 文件对象(File Objects)
  7. 迭代器与迭代器:
    1. 可迭代的对象并不一定就是迭代器。
    2. 可迭代对象是能够通过迭代操作依次获取元素的对象,
    3. 而迭代器是实现了迭代器协议的对象,它不仅可以被迭代,
    4. 还能记住当前的迭代位置,并在每次迭代时返回下一个元素。
      迭代器与生成器:
      迭代器:是一个对象,它实现了迭代器协议,能够逐个返回元素。
      生成器:是一种特殊的迭代器,它通过使用yield关键字来定义,可以在执行过程中暂停和恢复,按需生成元素。
      生成器是创建迭代器的一种简洁方式,

魔术方法:

  1. 魔术方法(Magic Methods)是 Python 中一些具有特殊名称和功能的方法。
    它们通常以双下划线开头和结尾,如__init____str____len__等。
    1. __init__:类的构造方法,用于初始化对象。
    2. 触发条件
      _str_方法的触发条件主要有以下几种: 使用str()`函数将对象转换为字符串时**。 打印对象时
    3. 注意点
      在自定义__str__方法时需要注意以下几点:
      1. 返回值应为字符串类型:确保返回的是一个能够清晰表示对象的字符串。
      2. 简洁明了:尽量使返回的字符串简洁易懂,能够准确反映对象的关键信息。
      3. 一致性:保持返回的字符串与对象的实际状态一致,避免产生误导。
  2. __str__:定义对象的字符串表示形式。
        class MyClass:def __init__(self, name):self.name = namedef __str__(self):return f"MyClass object with name: {self.name}"obj = MyClass("example")print(obj)
  1. __len__:定义对象的长度。
    class MyList:def __init__(self, items):self.items = itemsdef __len__(self):return len(self.items)my_list = MyList([1, 2, 3])print(len(my_list))
  1. __del__:对象被销毁时调用。
    __del__方法的触发条件通常有以下几种情况:
    1. 程序结束时**:当程序正常结束运行时,会触发对象的__del__方法。
    2. 对象的所有引用都被删除时**:当对象不再有任何其他变量引用它时,会触发__del__方法。
  2. __eq____ne__lt__le____gt____ge__:用于比较对象。
  3. sys.getrefcount()
    获取对象的引用计数
  4. __init__方法是 Python 中的一个特殊方法,也称为构造方法。
    它在创建对象时被自动调用,用于对新创建的对象进行初始化操作。
    可以在__init__方法中为对象的属性赋值,执行其他必要的初始化任务。
    通过传递参数给__init__方法,为对象的name属性赋值
     class MyClass:def __init__(self, name):self.name = name

创建对象并进行初始化

obj = MyClass("示例对象")
__del__
__del__方法在对象即将被销毁时被调用。
需要注意的是,__del__方法的执行时间并不确定,
它可能不会及时被触发,尤其是在程序正常结束时。
并且,不建议在__del__方法中执行一些关键的操作或资源释放,因为它的执行可能不可靠。

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

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

相关文章

web——upload-labs——第四关——.htaccess文件绕过

先尝试直接上传一个普通的一句话木马 显示此文件不允许上传,这道题并没有提示不允许上传什么后缀的文件,经过尝试,基本上所有后缀能够被解析为php语句执行的文件都不能成功上传。试试正常的图片能不能上传: 我们再来试试图片马能不…

Gitcode文件历史记录查看和还原

文件历史记录 文件历史记录用于记录代码文件的更改历史,它允许用户查看文件的不同版本,了解每个版本的修改内容、作者和提交消息。这对于跟踪文件演进、恢复错误更改、审查代码以及了解项目进展都非常有用。 文件历史记录功能提供了以下核心功能&#…

1、C语言学习专栏介绍

引言 欢迎来到C语言专栏学习之旅!C语言作为一种历史悠久且功能强大的编程语言,自其诞生以来,一直在计算机科学领域占据重要地位。 无论是操作系统开发、嵌入式系统、游戏编程,还是高性能计算,C语言都展现出了其独特的…

【学习】HTTP

HTTP 超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开…

Visual Studio Code 端口转发功能详解

Visual Studio Code 端口转发功能详解 引言 Visual Studio Code(简称 VS Code)是一个功能强大的源代码编辑器,它支持多种编程语言的语法高亮、智能代码补全、自定义快捷键、代码重构等特性。除了这些基本功能外,VS Code 还提供了…

31-Shard Allocation Awareness(机架感知)

同一机器上,部署多个es节点,防止副本和主分片分配到同一机器上 例如:es节点a、b、c部署在01机器上,节点d、e、f部署在02机器上 es2.4版本配置 a、b、c节点yaml配置:node.rack: aaa d、e、f节点yaml配置&#xff1a…

机器学习【激活函数】

笔记内容侵权联系删 激活函数的概念神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输入在加…

内网、公网(外网)划分

内网、公网(外网)划分 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…

前端神经网络入门(二):如何利用 WebGPU 进行数值计算,实现大规模数据的计算加速?- 边读边按下F12跑代码吧

在 Web 应用开发中,JavaScript 是前端开发者们最常用的语言。然而,当面对大规模数据处理和计算任务时,JavaScript 在浏览器中的执行往往会受到诸多性能瓶颈的限制。幸运的是,WebGPU 的出现,为我们提供了在前端实现高性…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

Oracle故障处理:ora-12514 与 ora-28547

目录 项目场景 问题分析 问题总结 项目场景 现场同事求助说:有个刚刚部署在Windows上的Oracle11gR2数据库(单机单实例),使用PLSQL工具连接不上。帮忙查看后,发现未装Oracle client,指导其安装完Oracle客…

Kafka基础知识学习

Kafka概念 一、核心组件对照表 组件定义主要功能特点BrokerKafka集群中的服务器节点存储消息、处理请求、管理分区唯一ID,可能成为ControllerTopic消息的逻辑分类单元消息分类、存储组织包含多个Partition,类似数据库表PartitionTopic的物理分片并行处…

【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…

PC上浏览器是如何查询DNS 缓存的呢?

通过 ipconfig /displaydns 的显示结果可以获取本机的 DNS 缓存信息,那么浏览器是如何获取本机的 DNS 缓存。 答案是:浏览器获取本机的 DNS 缓存主要是通过操作系统提供的接口来获取,。 具体的获取途径如下: 先查询自身缓存&am…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动,所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

BuyPass SSL证书:申请免费可用多域名SSL证书6个月180天

目录 一、前沿 二、条件 三、申请流程 四、注意事项 五、总结 一、前沿 找到一个6个月180天的免费证书,目前 BuyPass 提供了类似ZerSSL 等基于 ACME/Certbot 的证书自动签发服务 - BuyPass GO Free SSL,完全免费,只支持单域名、多域名&am…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件&#…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

React状态管理之Redux

React状态管理之Redux 在React应用中,状态管理是一个至关重要的概念。随着应用规模的扩大,组件之间的状态共享和更新变得愈发复杂。Redux作为一个专门用于JavaScript应用(尤其是React应用)的状态管理库,提供了一种可预…