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中对象的交互和操作。