理解

魔法函数,就是内置自动触发函数,不需要显示的调用,隐式的触发,只有在调用某种其他显式的函数,才会触发。万物都可能对象,是在对象里面的函数。

内置函数(内建函数)built-in functions与魔法方法(特殊方法)magic method(special method)的区别
:https://www.cnblogs.com/rainbow-ran/p/12205080.html
python中万物皆对象,基本只要是对象就会存在__dict__,不过部分对象除外,比如int,str,list这种内置的数据类型就没有__dict__

什么是魔法函数

所谓魔法函数(Magic Methods),是Python的一种高级语法,允许你在类中自定义函数(函数名格式一般为__xx__),并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动调用__str__()函数,并返回相应的结果。在我们平时的使用中,可能经常使用__init__函数(构造函数)和__del__函数(析构函数),其实这也是魔法函数的一种。
Python中以双下划线(xx)开始和结束的函数(不可自己定义)为魔法函数。
调用类实例化的对象的方法时自动调用魔法函数。
在自己定义的类中,可以实现之前的内置函数。

魔法函数有什么作用?

魔法函数可以为你写的类增加一些额外功能,方便使用者理解。举个简单的例子,我们定义一个“人”的类People,当中有属性姓名name、年龄age。让你需要利用sorted函数对一个People的数组进行排序,排序规则是按照name和age同时排序,即name不同时比较name,相同时比较age。由于People类本身不具有比较功能,所以需要自定义,你可以这么定义People类:

本质,内置函数和魔法函数

一、内置函数(内建函数)built-in functions与魔法方法(特殊方法)magic method(special method)的区别

内置函数(内建函数)

内建函数(内建是相对于导入import来说的)是指python内部自带的函数,不需要导入外部包即可实现的函数,比如 len(),abs()等。

Python针对众多的类型,提供了众多的内建函数来处理,这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Python常将其设置为该种类型的方法(method)。

Python内置函数列表可参考:

魔法方法(特殊方法)

此类方法实质就是内建函数的底层函数,也即 len()函数调用的是__len__()函数等等。

由于内置函数调用特殊函数是由解释器自动调用,比如 > 操作直接调用 gt() 特殊函数,看起来比较魔法,故也称特殊函数也为魔法函数。

介绍

【强烈推荐】超详解Python-魔法函数(高级语法):https://blog.csdn.net/qq_46092061/article/details/120314165
python的__name__、classdictmodulequalname,以及dir的含义与使用场景:https://blog.csdn.net/NeverLate_gogogo/article/details/107519919

Python进阶:实例讲解Python中的魔法函数(Magic Methods)https://zhuanlan.zhihu.com/p/24567545
Python:实例讲解Python中的魔法函数(高级语法)https://zhuanlan.zhihu.com/p/344951719

Python中有哪些魔法函数?

Python中每个魔法函数都对应了一个Python内置函数或操作,比如__str__对应str函数,__lt__对应小于号<等。Python中的魔法函数可以大概分为以下几类:

类的构造、删除:

object.new(self, …)
object.init(self, …)
object.del(self)
二元操作符:

  • object.add(self, other)
  • object.sub(self, other)
  • object.mul(self, other)
    // object.floordiv(self, other)
    / object.div(self, other)
    % object.mod(self, other)
    ** object.pow(self, other[, modulo])
    << object.lshift(self, other)

object.rshift(self, other)
& object.and(self, other)
^ object.xor(self, other)
| object.or(self, other)
扩展二元操作符:

+= object.iadd(self, other)
-= object.isub(self, other)
*= object.imul(self, other)
/= object.idiv(self, other)
//= object.ifloordiv(self, other)
%= object.imod(self, other)
**= object.ipow(self, other[, modulo])
<<= object.ilshift(self, other)

= object.irshift(self, other)
&= object.iand(self, other)
^= object.ixor(self, other)
|= object.ior(self, other)
一元操作符:

  • object.neg(self)
  • object.pos(self)
    abs() object.abs(self)
    ~ object.invert(self)
    complex() object.complex(self)
    int() object.int(self)
    long() object.long(self)
    float() object.float(self)
    oct() object.oct(self)
    hex() object.hex(self)
    round() object.round(self, n)
    floor() object__floor__(self)
    ceil() object.ceil(self)
    trunc() object.trunc(self)
    比较函数:

< object.lt(self, other)
<= object.le(self, other)
== object.eq(self, other)
!= object.ne(self, other)

= object.ge(self, other)
object.gt(self, other)
类的表示、输出:

str() object.str(self)
repr() object.repr(self)
len() object.len(self)
hash() object.hash(self)
bool() object.nonzero(self)
dir() object.dir(self)
sys.getsizeof() object.sizeof(self)
类容器:

len() object.len(self)
self[key] object.getitem(self, key)
self[key] = value object.setitem(self, key, value)
del[key] object.delitem(self, key)
iter() object.iter(self)
reversed() object.reversed(self)
in操作 object.contains(self, item)
字典key不存在时 object.missing(self, key)

Python-魔法函数相关推荐

  1. exit函数_全面深入了解 Python 魔法函数

    (点击上方公众号,可快速关注一起学Python) 作者:浪子燕青       链接: http://www.langzi.fun/Python魔法函数.html 魔法函数概念 魔法函数是以双下划线开头 ...

  2. 一文读懂什么是Python魔法函数

    一文读懂什么是Python魔法函数 Python的魔法函数是指Python的类中,一系列函数名由双下划线包裹的函数. 笔者最初接触到魔法函数的使用是在Pytorch中,在Pytorch中的Datase ...

  3. python 魔法函数

    Python魔法函数 前言 魔法函数 定义 常用的魔法方法 类构造与初始化 类的表示 控制属性访问 比较.运算等操作 容器类操作 可调用对象 序列化 总结 前言 本篇博客主要介绍Python的魔法函数 ...

  4. python 魔法函数 运行时_16个python常用魔法函数

    ==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较). ·==是比较两个对象是否相等 1.__ init__(): 所有类的超类object,有一个默认包含pass的__ init ...

  5. Python魔法函数

    python中定义的以__开头和结尾的的函数.可以随意定制类的特性.魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用. __getitem__(self, item) 将类编程一 ...

  6. python 魔法函数 __add___PythonI/O进阶学习笔记_2.魔法函数

    前言: 本文一切观点和测试代码是在python3的基础上. Content: 1.什么是魔法函数,魔法函数__getitem__在python中应用. 2.python的数据模型和数据模型这种设计对p ...

  7. python 魔法函数是什么意思_Python 中的魔法函数

    魔法函数是Python中的特性,学习好魔法函数将有助于我们写出优秀的pythonic(优雅的.地道的.整洁的)代码,同时因为Python语言的特性,我们在进行框架设计的时候除了设计模式等高级技能,魔法 ...

  8. python魔法函数(二)之__getitem__、__len__、__iter__

    魔法函数会增强python类的类型,独立存在 __getitem class Company:def __init__(self, employees):self.employees = employ ...

  9. Python魔法函数与两比特量子系统模拟

    技术背景 本文主要涵盖两个领域的知识点:python的魔法函数和量子计算模拟,我们可以通过一个实际的案例来先审视一下这两个需求是如何被结合起来的. 量子计算模拟背景 ProjectQ是一个非常优雅的开 ...

  10. python 魔法函数 __add___python魔法方法

    python魔法方法 1.__init__: 初始化函数,在创建实例对象为其赋值时使用,在__new__方法之后.__init__必须至少有一个参数__self__,就是这个__new__返回的实例, ...

最新文章

  1. 使用react全家桶制作博客后台管理系统
  2. NHibernate 学习总结 开篇
  3. [Swift]LeetCode1020. 飞地的数量 | Number of Enclaves
  4. js过渡效果_干货 | Vue事件、过渡和制作index页面
  5. 【python基础知识】error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file
  6. mysql GROUP_CONCAT 排序
  7. 一些javascript的经验 (3)
  8. 将给出的整数x翻转_LeetCode(七)整数反转
  9. 霍兰德SI型如何选专业?霍兰德职业兴趣测试
  10. TTTTTTTTTTDDDDDDDD原来是这样。。。。。。。。。。的
  11. html编辑器设置为publisher,Microsoft Publisher操作简介
  12. 所谓笔法在也其次-《述张长史笔法十二意》
  13. 纸壳CMS的插件加载机制
  14. Mini-CEX在神经内科住院医师临床能力培养中的应用
  15. 8千多英语语法练习题ACCESS\EXCEL数据库
  16. python编程怎么念_python怎么读 python的读法
  17. linux蓝牙储备,储备 linux tty pty 虚拟终端
  18. 如何清除去掉PPT文字下的波浪线
  19. C#课程设计:《猜猜看》游戏开发总结
  20. SQL 总结(索引index、子查询、分页、开窗函数等)

热门文章

  1. 与椭圆积分有关的等式证明
  2. Android获取手机屏幕宽度
  3. 面试必备常见存储引擎与锁的分类
  4. 2022全球智博会如约将至 新设工业视觉重磅展区
  5. QQ2011捆绑并强制用户安装QQ电脑管家,小Q书桌和金山毒霸,你是什么态度?
  6. 【火龙果】评测二 从开发板电路设计入手
  7. 计算机微课培训总结,微课学习心得体会范文3篇
  8. 计算机考研四门专业课都要考吗,2022考研:计算机专业需要准备哪些科目?
  9. Beats:Beats processors
  10. js 数组遍历符合条件跳出循环体_Js数组遍历方法对比总结