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

在 Python 中,以双下划线开头和结尾的函数(如 `__str__`、`__sub__` 等)

在 Python 中,以双下划线开头和结尾的函数(如 __str____sub__ 等)被称为特殊方法(Special Methods)魔术方法(Magic Methods)。它们确实是 Python 内置的,用于定义类的行为,比如运算符重载、对象表示等。但严格来说,它们并不是“函数”,而是类的方法(method)。

常见双下划线方法(内置方法)示例:

  1. __str__:定义对象的字符串表示形式(str(obj)print(obj) 时调用)。
  2. __sub__:定义减法操作符 - 的行为(如 obj1 - obj2)。
  3. __init__:构造函数,初始化对象。
  4. __len__:定义对象的长度(len(obj) 时调用)。
  5. __add__:定义加法操作符 + 的行为。

你提到的代码:

def __str__(self):return f'{self.x}, {self.y}'def __sub__(self, other):return (self.x - other.x, self.y - other.y)
  • __str__ 方法会在调用 print(obj) 时返回一个格式化的字符串。
  • __sub__ 方法允许两个对象使用 - 运算符相减,返回一个元组。

关键点:

  1. 内置方法:这些方法是 Python 预定义的,但需要你自己在类中实现它们。
  2. 触发时机:它们通常由 Python 解释器在特定场景自动调用(如运算符操作、打印对象等)。
  3. 不是普通函数:它们是类的方法,必须定义在类中。

示例完整类:

class Point:def __init__(self, x, y):self.x = xself.y = ydef __str__(self):return f'{self.x}, {self.y}'def __sub__(self, other):return (self.x - other.x, self.y - other.y)# 使用
p1 = Point(3, 4)
p2 = Point(1, 2)
print(p1)          # 调用 __str__,输出 "3, 4"
print(p1 - p2)     # 调用 __sub__,输出 (2, 2)

总结:

双下划线方法是 Python 的内置特殊方法,用于自定义类的行为(如运算符、打印等),但它们需要你在类中显式实现。

http://www.xdnf.cn/news/3605.html

相关文章:

  • C++ unordered_set unordered_map
  • k8s3部署
  • 数字智慧方案5970丨智慧农业大数据服务建设方案(69页PPT)(文末有下载方式)
  • 使用huggingface_hub需要注意的事项
  • VBA快速合并多列单元格
  • 英伟达黄仁勋推荐的深度学习教程
  • Langchain,为何要名为langchian?
  • C语言 指针(3)
  • QT6(31)4.5常用按钮组件:Button,以及例题实现,如何为程序引入图片资源文件,本篇只包括例题程序的界面搭建
  • 树与二叉树完全解析:从基础到应用
  • 使用 Helm 在 EKS 上管理多个 Traefik Ingress 控制器和 ALB 的流量
  • 前端应用开发技术历程的简要概览
  • 第 5 篇:红黑树:工程实践中的平衡大师
  • 如何提升自我情绪管理的能力?
  • cpper 转 java
  • 现代健康养生全攻略
  • 4.2 math模块
  • 镜像和容器的深度介绍和关系
  • kaggle人工智能竞赛:通过声纹识别生物种类
  • DiT:文档图像Transformer 的自监督预训练
  • 数据结构之平衡二叉树
  • Linux 常用命令合集
  • 文献阅读篇#7:5月一区好文阅读,BFA-YOLO,用于建筑信息建模!(下)
  • 同构字符串(简单)
  • LeetCode 热题 100:普通数组
  • 在 Windows 中安装 Pynini 的记录
  • java 进阶 1.0
  • 阿里云服务器防御是怎么做出来的?服务器攻击方式有几种?
  • PMP-第九章 项目资源管理(二)
  • 深度学习与 PyTorch 基础