Python魔术方法专题

  • Post category:Python

Python魔术方法专题

Python是一门动态语言,其魔术方法(Magic Method/ Special Method)可以让我们在运行时实现类的特别的行为。 实际上,在Python中,几乎一切都是对象,对象之间可以通过一些操作符和函数,实现与其他对象的交互和操作,而这些操作的背后,则隐藏着一个又一个的魔术方法。本文将详述Python中魔术方法的专题,介绍常用的魔术方法,以及其使用方法和相关实例。

定义

魔术方法,也称为特殊方法(Special Method),是指类中定义的一组特殊方法,和Python中的内置运算符绑定在一起。大部分魔术方法的名字使用了双下划线来标识,比如__init____str__等。

常用魔术方法

以下是常用魔术方法列表,本篇文章我们将详细讲解__str__和__len__两个方法。

魔术方法 描述
__new__(cls[, ...]) 创建对象时被调用
__init__(self[, ...]) 对象被创建时被调用
__del__(self) 对象被销毁时被调用
__str__(self) 当str()函数被调用时被调用
__repr__(self) 当repr()函数被调用时被调用
__len__(self) 当len()函数被调用时被调用
__add__(self, other) 当两个对象相加时被调用
__sub__(self, other) 当两个对象相减时被调用
__eq__(self, other) 当两个对象相等时被调用
__lt__(self, other) 当一个对象小于另一个对象时被调用

实例说明

str

__str__用于自定义类的输出,通过字符串格式将对象转化为字符串。下面是一个例子:

class Student:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return "Student object (name: %s)" % self.name

print(Student("Tom"))

输出内容:

Student object (name: Tom)

通过实现__str__方法,我们可以很方便的自定义类的输出。

len

__len__用于自定义类的长度,返回一个对象的长度。下面是一个例子:

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

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

my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list))

输出:

5

通过实现__len__方法,我们可以自定义类的长度,让外部函数调用len()时,得到我们期望返回的长度值。

总结

本文针对Python的魔术方法进行了详细讲解,介绍了常用的魔术方法和相关的实现方法,其中重点讲解了__str____len__方法。通过学习魔术方法,可以深一步了解Python中对象的交互和操作。