千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Python中常见的魔法方法

Python中常见的魔法方法

来源:千锋教育
发布人:wjy
时间: 2022-09-13 17:42:18 1663062138

  1、什么是Python魔法方法

  魔法方法是在Python的类中被双下划线前后包围的方法,如常见的 :init、new、__del__等。这些方法在类或对象进行特定的操作时会自动被调用,我们可以使用或重写这些魔法方法,给自定义的类添加各种特殊的功能来满足自己的需求。

  2、常用的魔法方法

  init

  最为常见并熟知的魔法方法就是__init__()方法,可以用此方法来定义一个对象的初始化操作。例如:

什么是Python魔法方法309

 

  new

  init()方法很容易被认为是在实例化对象时调用的第一个方法,其实不是,当我们实例化一个对象的时候,例如class1=MyClass(1, 2),第一个被调用的是__new__()方法,而后再调用__init__()方法,并把一些参数传给__init__()方法,new()方法才是真正地创建了实例化对象,init()方法只是给这个对象进行了初始化操作。

  

什么是Python魔法方法600

 

  执行结果如下:

什么是Python魔法方法715

 

  需要注意的是: new()方法第一个参数必须是cls参数,表示当前类,必须返回一个实例化对象,没有什么特别的需求,最好不用重写此方法。

  del

  当一个对象的生命周期结束被彻底销毁的时候被调,__del__方法会被调用,不常用,一般不需要进行重写。

  str & repr

  str()方法定义当被print()方法或者str()方法调用时的行为,repr()方法定义当被print()方法或者repr()方法调用时的行为,一般来说,它们的功能都是实现类到字符串的转化,实现方式上也没有特别的差异。 但实际上,str()方法的返回结果可读性应该要更强一些,repr()方法的返回结果要更加准确,也就是说,str()方法的意义是得到便于人们阅读的信息,而__repr__()方法的目的在于开发者便于调试。

什么是Python魔法方法1179

 

  注意:当进行print()的时候,首先被执行的是__str__()方法,如果没定义__str__()方法,repr()方法才会被执行。

  call

  call()方法可以让类的实例像函数一样被调用。例如:

什么是Python魔法方法1391

 

  当调用p()时,call()方法会被调用,返回参数x和y的乘积,call()方法也可以接受参数。

  iter

  如果我们希望一个实例化对象是一个迭代器,可被用于for…in循环遍历,这时我们需要在类中定义__iter__()方法和__next__()方法,iter()方法返回一个迭代对象,next()返回迭代器的下一个元素,这个在之前的文章有说过:迭代器Iterator的实现,这里就不展开了。

  总结

  其实魔法方法远远不止这些,还有很多很多也值得我们去使用,Python中的魔法方法就跟它的名字一样有魔法,总是可以便捷的给你提供你所需要的各种需求,它们是Python面向对象编程的一大利器,使用好了会有意想不到的结果,慢慢去了解并使用它们吧。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT