Python中的魔法方法是指特殊方法或特殊函数,它们用于在类定义中实现特定操作或功能。在Python中,魔法方法的命名约定是以两个下划线开头和结尾,比如__init__、__str__等。下面将介绍一些常用的魔法方法。

1. __init__

魔法方法__init__用于初始化对象,在创建对象时自动调用。它可以接受参数并对对象的属性进行初始化。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("张三", 20)
print(person.name)  # 输出:张三
print(person.age)  # 输出:20

2. __str__

魔法方法__str__用于返回对象的字符串表示。在使用print函数或str()函数时,会自动调用__str__方法。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"姓名:{self.name},年龄:{self.age}"

person = Person("张三", 20)
print(person)  # 输出:姓名:张三,年龄:20

3. __add__

魔法方法__add__用于实现对象的加法操作。当对两个对象进行加法运算时,会自动调用__add__方法。例如:

class Complex:
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag

    def __add__(self, other):
        return Complex(self.real + other.real, self.imag + other.imag)

c1 = Complex(1, 2)
c2 = Complex(3, 4)
c3 = c1 + c2
print(c3.real, c3.imag)  # 输出:4 6

4. __len__

魔法方法__len__用于返回对象的长度或大小。当对对象调用内置函数len()时,会自动调用__len__方法。例如:

class MyList:
    def __init__(self, data):
        self.data = data

    def __len__(self):
        return len(self.data)

my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list))  # 输出:5

这里只列举了一些常用的魔法方法,实际上Python中还有很多其他的魔法方法,如__eq__用于判断相等性、__lt__用于比较大小、__getitem__用于访问元素等。这些魔法方法可以根据需要进行重写,以实现自定义的操作或行为。通过使用魔法方法,我们可以使我们的类与Python内置的类型一样方便和直观,提高代码的可读性和可用性。同时,掌握常用的魔法方法也是成为Python高级开发者的重要一步。