当前位置: 首页 > news >正文

Python的魔术方法

魔术方法

在 Python 中,魔术方法(也称为特殊方法或杜撰方法)是一组预定义的方法名,它们以双下划线(__)开头和结尾。这些方法提供了对Python内置操作符和行为的定制能力。以下是一些常见的魔术方法及其用途:

1、对象创建和销毁

  • __new__(cls, ...):控制对象的创建过程,返回新创建的对象实例
  • __init__(slef, ...):初始化对象的属性,通常在创建对象后立即调用
  • __del__(self, ...):对象销毁时调用,可以用来释放资源,但不建议依赖它来释放资源,因为它不总是被调用。

2、对象表示

  • __repr__(self):返回对象的官方字符串表示形式,主要用于调试和开发
  • __str__(self):返回对象的可读字符串表示形式,主要用于输出给用户

3、数值运算

  • __add__(self, other):实现加法操作 +
  • __sub__(self, other):实现减法操作 -
  • __mul__(self, other):实现乘法操作 *
  • __truediv__(self, other):实现真除法操作 /
  • __floordiv__(self, other):实现整数除法操作 //
  • __pow__(self, power[, modulo]):实现幂运算操作
  • __neg__(self):实现负号 -
  • __pos__(self):实现正号 +
  • __abs__(self):实现绝对值 abs()

4、比较运算

  • __eq__(self, other):实现等于操作==
  • __ne__(self, other):实现不等于操作 !=
  • __lt__(self, other):实现小于操作 <
  • __le__(self, other):实现小于等于操作 <=
  • __gt__(self, other):实现大于操作 >
  • __ge__(self, other):实现大于等于操作 >=

5、属性访问

  • __getattr__(self, name):当尝试获取不存在的属性时被调用
  • __setattr__(self, name, value):当属性被设置时调用
  • __delattr__(self, name):当属性被删除时调用

6、序列和迭代

  • __len__(self):返回序列的长度
  • __getitem(self, key):获取序列中的元素
  • __setitem__(self, key, value):设置序列中的元素
  • __delitem__(self, key):删除序列中的元素
  • __iter__(self):返回迭代器对象
  • __next__(self):迭代器对象的下一个元素

7、上下文管理器

  • __enter__(self):上下文管理器的开始,返回一个对象
  • __exit__(self, exc_type, exc_val, exc_tb):上下文管理器的结束,处理资源的清理
http://www.dtcms.com/a/305440.html

相关文章:

  • 在 Cloudflare 平台上完整部署 GitHub 项目 MoonTV 实现免费追剧流程
  • 计算机网络基础(一) --- (网络通信三要素)
  • Deep Learning_ Foundations and Concepts-Springer (2024)【拜读】20章3节
  • Linux C:构造数据类型
  • python基础:request请求Cookie保持登录状态
  • Python高效历史记录管理:保存最后N个元素的完整指南
  • 机械学习--线性回归
  • 项目如何进行阶段性评估?核心要点
  • Java07--面向对象
  • 【收银系统开发】收银系统之数字键盘,人机交互中重复判断——仙盟创梦IDE
  • thingsboard 自定义动作JS编程
  • 1768. 交替合并字符串
  • 2025年06月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【C#学习Day13笔记】静态成员、接口、运算符重载和索引器
  • Redis 键值对操作详解:Python 实现指南
  • 【Dify】-进阶14- 用 Dify 搭建法律文档解析助手
  • 工作中使用git可能遇到的场景
  • docker docker、swarm 全流程执行
  • 抵御酒店管理系统收银终端篡改攻击 API 加密的好处及实现——仙盟创梦IDE
  • LLM中BLEU 指标、ROUGE 指标、PPL指标
  • MySQL图解索引篇
  • 7.29 Java SE(Java高级 P191-P199)
  • Linux 线程概念与控制
  • 继续打卡day6
  • SpringJDBC源码初探-DataSource类
  • 理解“无界队列”与“有界队列”及其适用场景
  • BigemapPro吸附功能 | 绘图共点共边,标绘从此无缝衔接!
  • 【Python】数据可视化之聚类图
  • 进阶向:Manus AI与多语言手写识别
  • 大模型量化004