大家好,python有这样一类特殊方法,使用双下划线“包裹”起来,比如__init__、__new__这类方法,开发代码时不知不觉就用到了这种方法。比如我们在创建对象的时候都知道有__init__(),并且很多人都认为创建对象的时候首先执行就是__init__(),并不知道,其实创建对象先执行的是__new__()方法,只是没有感知而已。可以给你的类增加魔力,我们称这类方法为魔术方法。
魔术方法我们也可以理解为与python内置函数、关键字紧密相连的方法。比如在使用内置函数len()时就会默认触发使用“__len__”魔术方法。
首先我们来看一下魔术方法的风采:
有同学忍不住说了,你这也太多了,还是部分,那这些魔术方法我们在哪里可以使用呢?应该怎么用呢?
好的,那我们就先说说魔术方法的用途。
用途:魔术方法与普通方法的区别是不需要调用,需要触发。在类或对象的某些事件触发后会自动执行,如果希望根据自己的程序定制特殊功能的类,那么就需要对这些方法进行重写。使用这些方法,我们可以非常方便地给类添加特殊的功能。
至于用法,每个方法的触发条件不同,魔术方法确实挺多,但是大多时间使用的并不多,不需要全部记住,这里我们需要了解,使用方法及常用的魔术方法即可。下面我们来看一下示例:
从结果中,我们可以看到创建对象时和对象调用时触发函数的顺序,也可以看到__call__方法是在对象调用的时候才会被触发,由此我们知道对于使用魔术方法,我们要把握好它的触发节点,才能在特定需求中更好得到应用。
下面我们再看下其他几个常用的魔术方法:
结语:魔术方法是python里面非常重要的一个分支,平时我们写代码或多或少都会接触到,而且它们所产生的作用也是非常巨大的,尤其是大型企业开发讲究工整性的时候,buxu。