Python中的Dunder方法实现小结

 更新时间:2026年03月09日 09:55:11   作者:老赵全栈实战  
本文主要介绍了Python中的Dunder方法实现小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

📅 今日知识点

  • 核心主题:深入理解Python中的dunder(魔术)方法
  • 适用场景:面向对象编程、自定义类行为、提升代码可读性

🧠 什么是Dunder方法?

Dunder方法(Double Underscore Methods)是Python中以双下划线开头和结尾的特殊方法,例如 __init____str__ 等。它们允许我们自定义类的行为,让对象支持运算符、打印、迭代等功能。

🔧 核心Dunder方法分类与示例

1. 初始化与销毁

__init__(self, ...)

用途:对象创建时自动调用,用于初始化属性。

class Student:

    def __init__(self, name, score):

        self.name = name

        self.score = score

s = Student("张三", 95)

print(s.name)  # 输出: 张三

__del__(self)

用途:对象销毁前调用,可用于清理资源。

class FileHandler:

    def __del__(self):

        print("文件句柄已释放")

2. 字符串表示

__str__(self)

用途:定义 print(obj)str(obj) 的输出。

class Car:

    def __init__(self, brand):

        self.brand = brand

  
    def __str__(self):

        return f"汽车品牌: {self.brand}"

  
car = Car("特斯拉")

print(car)  # 输出: 汽车品牌: 特斯拉

__repr__(self)

用途:开发者调试时显示的内容,建议返回可重构对象的表达式。

def __repr__(self):

    return f'Car("{self.brand}")'

3. 运算符重载

__add__(self, other)

用途:定义 + 运算符的行为。

class Vector:

    def __init__(self, x, y):

        self.x = x

        self.y = y

  
    def __add__(self, other):

        return Vector(self.x + other.x, self.y + other.y)

  
v1 = Vector(1, 2)

v2 = Vector(3, 4)

v3 = v1 + v2

print(v3.x, v3.y)  # 输出: 4 6

__eq__(self, other)

用途:定义 == 比较逻辑。

def __eq__(self, other):

    return self.x == other.x and self.y == other.y

4. 容器行为

__len__(self)

用途:支持 len(obj)

class MyList:

    def __init__(self, data):

        self.data = data

    def __len__(self):

        return len(self.data)


ml = MyList([1, 2, 3])

print(len(ml))  # 输出: 3

__getitem__(self, key)

用途:支持 obj[key] 访问。

def __getitem__(self, index):

    return self.data[index]

5. 可调用对象

__call__(self, ...)

用途:让实例可以像函数一样被调用。

class Multiplier:

    def __init__(self, factor):

        self.factor = factor

  


    def __call__(self, x):

        return x * self.factor
 


double = Multiplier(2)

print(double(5))  # 输出: 10

🚀 实战案例:自定义分数类

class Fraction:

    def __init__(self, numerator, denominator):

        self.numerator = numerator

        self.denominator = denominator

  


    def __str__(self):

        return f"{self.numerator}/{self.denominator}"

  


    def __add__(self, other):

        new_num = self.numerator * other.denominator + other.numerator * self.denominator

        new_den = self.denominator * other.denominator

        return Fraction(new_num, new_den)


f1 = Fraction(1, 2)

f2 = Fraction(1, 3)

result = f1 + f2

print(result)  # 输出: 5/6

❗ 注意事项

  • 不要滥用dunder方法,保持代码清晰易懂
  • 遵循Python惯例,避免自定义非标准的dunder方法
  • 测试边界条件,确保方法行为符合预期

💡 小贴士

  • 学会阅读官方文档了解经常使用的dunder方法
  • 利用IDE提示快速查找相关方法
  • 多实践,从简单类开始逐步掌握复杂用法

到此这篇关于Python中的Dunder方法实现小结的文章就介绍到这了,更多相关Python Dunder方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现网站表单提交和模板

    Python实现网站表单提交和模板

    今天小编就为大家分享一篇关于Python实现网站表单提交和模板,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 一文搞懂霍夫曼树原理及C++/Python/Java实战实现

    一文搞懂霍夫曼树原理及C++/Python/Java实战实现

    霍夫曼树是一种用于数据压缩的树形结构,通过构建具有最小带权路径长度的二叉树,实现高效的数据编码,这篇文章主要介绍了霍夫曼树原理及C++/Python/Java实战实现的相关资料,需要的朋友可以参考下
    2025-11-11
  • python 共现矩阵的实现代码

    python 共现矩阵的实现代码

    这篇文章主要介绍了python 共现矩阵的实现代码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • python输出带颜色字体实例方法

    python输出带颜色字体实例方法

    在本篇文章里小编给大家整理了关于python输出带颜色字体实例以及相关代码,有需要的朋友们可以学习参考下。
    2019-09-09
  • 18个好用的Python技巧分享(建议收藏)

    18个好用的Python技巧分享(建议收藏)

    在这篇文章中,我们将讨论最常用的一些python技巧,这些技巧都是在日常工作中使用过的简单的Trick,小编觉得好东西就是要拿出来和大家一起分享哒
    2023-07-07
  • Python+OpenCV编写车辆计数器系统

    Python+OpenCV编写车辆计数器系统

    本文,我们将使用欧几里德距离跟踪和轮廓的概念在 Python 中使用 OpenCV 构建车辆计数器系统,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-05-05
  • Python上下文管理器深入讲解

    Python上下文管理器深入讲解

    Python有三大神器,一个是装饰器,一个是迭代器、生成器,最后一个就是今天文章的主角 -- 「上下文管理器」。上下文管理器在日常开发中的作用是非常大的,可能有些人用到了也没有意识到这一点
    2022-12-12
  • 如何基于python实现单目三维重建详解

    如何基于python实现单目三维重建详解

    单目三维重建是根据单个摄像头的运动模拟双目视觉获得物体在空间中的三维视觉信息,下面这篇文章主要给大家介绍了关于如何基于python实现单目三维重建的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python中使用 zipfile创建文件压缩工具

    Python中使用 zipfile创建文件压缩工具

    这篇文章主要介绍了Python中使用zipfile创建文件压缩工具,通过使用 wxPython 模块,我们创建了一个简单而实用的文件压缩工具,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的ca参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 使用Python脚本操作MongoDB的教程

    使用Python脚本操作MongoDB的教程

    这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面上的教程一般都是讲解JavaScript的脚本操作,本文则是基于Python,需要的朋友可以参考下
    2015-04-04

最新评论