很多小伙伴在学习Python程序的时候,会遇到用“__”双下划线包起来的代码,这是一串什么意思的代码呢?就让我们来深入了解一下吧!
一、Python的“魔法方法”
Python中,所有“__(函数名)__”双下划线包裹的这种方式的代码就叫做“魔法方法”,这种方法在特定的条件下会自动调用;当然也可以手动添加,但是需要保证他们的方法名通常会被左右两个双下划线包裹。
二、常用的“魔法方法”
1)__add__(self,other):定义“+”运算符的魔法方法;
2)__sub__(self,other):定义“-” 运算符的魔法方法;
3)__mul__(self,other):定义“*” 运算符的魔法方法;
4)__truediv__(self,other):定义“/” 运算符的魔法方法;
5)__floordiv__(self,other):定义“//” 运算符的魔法方法;
6)__mod__(self,other):定义“%”运算符的魔法方法;
7)__pow__(self,other[,modulo]):定义“**”或者次方运算的魔法方法;
8)__init__(self[,...]):初始化被创建的实例对象;
9)__new__(cls[,...]):创建实例然后返回该实例对象;
10)__del__(self):销毁实例时调用的魔法对象。
11)......
三、“init”和“new”的区别
在我们常用的“魔法方法”当中,最难学习的也是最容易混淆的就是“__init__”和“__new__”方法,虽然在实际的开发并不需要深入的探讨这个问题,但是作为一名学习者,了解Python函数的本质也是关键一步。
l相同点:都是Python面向对象程序中的函数。
l不同点:
u“__new__”一般是在实例创建之前调用,他是创建实例然后再返回实例对象。
u“__init__”是在实例创建完成之后才能被调用,可以在此函数内部保存初始值,用在类的实例化的时候。
l总结:在Python面向对象的程序编写中,先调用“__new__”,后调用“__init__”,“__new__”返回值的值是传递到“__init__”的第一个参数中,“__init__”给这个实例设置初始值。
四、总结
以上就是Python“魔法方法”的解释以及衍生的知识了,在学习到面向对象编程思想的时候更是要频繁的使用这类方法;了解每个方法大概有什么功能其实也是学习的一部分,毕竟防范于未然,在碰到此类方法的时候,也不会手忙脚乱的查资料啦。