前言
相信很多使用 python 的小伙伴都有一个困惑,在看一些库的源码时,发现源码中有很多 XX(双下划线开头,双下划线结尾)的方法。比如我们在定义类时,经常用到的初始化方法 init,在 python 中像 __init __ 这类双下划线开头和结尾的方法,我们把它统称为魔术方法(也有叫魔法方法和特殊方法的)。 今天就专门和大家一起来聊聊 python 中的魔术方法,首先我们来看看魔术方法有哪些特征。
魔术方法的特征:
魔术方法都是双下划线开头,双下划线结尾的方法
魔术方法都是 python 内部事先定义的,是对象相关行为的底层实现方法
魔术方法都是在特定的情况下自动化触发的,一般不会直接去调用。
接下来我们一起看看 python 中场景的一些魔术方法。
1、new 方法
相信大多的程序员,都听说过 new一个对象 这句话(如下图),
在很多的编程语言中创建对象都是使用的 new 来创建的,那么在咱们 python 中呢?其实也有一个 new,它是一个魔术方法,接下来我们一起来看看。
问题:python 创建一个对象的时候,调用的第一个方法是什么?
很多小伙伴会说是 init,其实不然,正确答案是:new 方法
问题:那么这个 new 方法呢,它有什么作用?又在什么时候会调用呢?
案例:
接下来我们一起来看看下面这案例段代码:
c