简单聊聊Python中的魔术方法

103 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言

这篇文章来源于公众号后台的留言,大概是说类中很多魔术方法,能不能总结一下,所以这篇文章就来了。

3629157-f5ce0a2ca30ab5ce.jpg

魔术方法

Python中魔术方法确实很多,这一期我也不打算全部列出来给大家,也不会详细介绍相关使用方法(因为很多都已经讲解过,买讲解的后期也会讲解)。

魔术方法有分运算符相关,这期只是讲解与运算符不相关的(相关的例如__add__),也是大家比较感兴趣的。

字符串/字节序列表示相关:__repr__、__str__,__format__,__bytes__。这些主要是做一些格式化的操作。

数值转换:__abs__、__bool__、__complex__、__int__、__float__、__hash__、__index__。我想这些大家都很熟悉,就不过多介绍了。

集合模拟:__len__、__getitem__、__setitem__、__delitem__、__contains__。我们用的列表就包括了这些方法。

迭代枚举:__iter__、__reversed__、__next__。主要用于迭代器和生成器,以后我们单独拿来讲解。

可调用模拟:__call__。我在元类中分享过,主要是加上括号就能触发调用,大家感兴趣可以去看看那篇文章。

上下文管理:__enter__、__exit__。大家还记得with读取文件吗,其实就是上下文管理器。

实例创建和销毁:__new__、__init__、__del__。这些都是创建类中常常使用的,我在类和元类文章中都有讲解。

属性相关:__getattribute__、__getattr__、__setattr__、__delattr__、__setattr__、__dir__。这五个方法我单独写过一篇文章,主要是用于操作属性的。

属性描述符:__get__、__set__、__del__。用来定义属性描述符,也写过文章。

今天的分享就到这了,我们下期再见~