Python--内置魔术方法笔记

1. 简介

在 Python 中,魔术方法(也称为特殊方法或双下方法)是一些具有特殊名称的方法,它们可以被内置函数或操作符调用,从而改变类的行为。这些方法通常以双下划线开头和结尾。

2. 魔术方法的作用

魔术方法允许开发者定义类的行为,使其能够响应 Python 内置的操作,如比较、打印、调用等。

3. 示例代码

以下是一些常见的魔术方法的示例代码:

class Student:
    def __init__(self, name, age):
        self.name = name        # 学生姓名
        self.age = age          # 学生年龄

    # __str__魔术方法
    def __str__(self):
        return f"Student类对象,name:{self.name}, age:{self.age}"

    # __lt__魔术方法
    def __lt__(self, other):
        return self.age < other.age

    # __le__魔术方法
    def __le__(self, other):
        return self.age <= other.age

    # __eq__魔术方法
    def __eq__(self, other):
        return self.age == other.age

stu1 = Student("周杰轮", 31)
stu2 = Student("林俊节", 36)
print(stu1 == stu2)

4. 魔术方法详解

4.1 __init__
  • 作用:初始化对象。
  • 参数:通常包含 self 和其他参数。
  • 示例
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
4.2 __str__
  • 作用:定义对象的字符串表示。
  • 参数:通常包含 self
  • 示例
    def __str__(self):
        return f"Student类对象,name:{self.name}, age:{self.age}"
    
4.3 __lt__
  • 作用:定义小于操作。
  • 参数:包含 selfother
  • 示例
    def __lt__(self, other):
        return self.age < other.age
    
4.4 __le__
  • 作用:定义小于等于操作。
  • 参数:包含 selfother
  • 示例
    def __le__(self, other):
        return self.age <= other.age
    
4.5 __eq__
  • 作用:定义等于操作。
  • 参数:包含 selfother
  • 示例
    def __eq__(self, other):
        return self.age == other.age
    

5. 使用魔术方法的注意事项

  • 魔术方法的名称是固定的,不能随意更改。
  • 魔术方法通常在类定义中实现,而不是在对象实例中。
  • 魔术方法的实现应确保逻辑正确,避免引发错误。

6. 其他常见的魔术方法

除了上面提到的魔术方法,还有一些其他常用的魔术方法,如:

  • __add__:定义加法操作。
  • __sub__:定义减法操作。
  • __mul__:定义乘法操作。
  • __len__:定义 len() 函数的行为。
  • __call__:定义对象可以被调用的行为。

7. 总结

魔术方法是 Python 中一种强大的机制,通过它们可以扩展类的行为,使其更符合预期。掌握魔术方法的使用,可以提高代码的灵活性和可读性。


希望这篇笔记能帮助你更好地理解和使用 Python 的魔术方法。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值