python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Dunder方法

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

❗ 注意事项

💡 小贴士

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

您可能感兴趣的文章:
阅读全文