什么是魔法方法?
在Python中,有的方法的前后被双下划线所包围,这就是魔法方法,这些方法会在特殊的情况下被调用,而不用显示调用。

其中,Python中最常见的魔法方法便是构造方法_init_,同样的,构造方法也不用显示调用,当你创建一个对象时,程序会自动调用构造方法。

class test:def __init__(self,value=1):self.tag=value>>>t=test(5)
>>>t.tag
5

可以看到,当创建一个对象时,会自动执行构造函数内的代码。

除了构造函数之外,还有另外一些常见的魔法方法,可以创建类似于序列或映射的对象。

魔法方法 含义
_len_(self) 这个方法会返回集合中所含项目的数量,比如,序列中元素个数或键值对的数量,当返回0时,对象被当作布尔变量中的假值
_getitem_(self,key) 返回与所给键对应的值
_setitem_(self,key,value) 按照一定的方式存储和key相关的value
_delitem_(self,key) 该方法在对一部分对象使用del语句时被调用,同时删除相关的键

下面实现一个无穷序列。

def checkIndex(key):if not isinstance(key,(int,long)):raise TypeErrorif key<0: raise IndexErrorclass ArithmeticsSequence:def __init__(self,start=0,step=1):self.start=startself.step=stepself.changed={}def __getitem__(self,key):checkIndex(key)try:return self.changed[key]except KeyError:return self.start+key*self.stepdef __setitem__(self,key,value):checkIndex(key)self.changed[key]=value>>>s=ArithmeticsSequence(1,2)
>>>s[4]
9
>>>s[4]=2
>>>s[4]
2

可以看到,当需要key为4时所对应的值时,它自动会动用_getitem_(self,key)魔法方法进行计算。

Python学习之魔法方法相关推荐

  1. Python学习 14 魔法方法

    文章目录 1.基本的魔法方法 2.算术运算符 3.反算术运算符 4. 增量赋值运算符 7.描述符 8.定制序列 9.迭代器 10.生成器 练习题 1.基本的魔法方法 2.算术运算符 3.反算术运算符 ...

  2. 刻意练习:Python基础 -- Task11. 魔法方法

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  3. python入门——P41魔法方法:构造和析构

    魔法方法总是被双下划线包围 魔法方法是面向对象Python的一切 魔法方法的强大,体现在他们总能在合适的时候自动调用 __init__(self[, -]) 在实例被构造初始就需要属性,对一个对象进行 ...

  4. python深度讲解_《深度剖析CPython解释器》21. Python类机制的深度解析(第五部分): 全方位介绍Python中的魔法方法,一网打尽...

    楔子 下面我们来看一下Python中的魔法方法,我们知道Python将操作符都抽象成了一个魔法方法(magic method),实例对象进行操作时,实际上会调用魔法方法.也正因为如此,numpy才得以 ...

  5. Python 学习7-魔方方法

    十.魔方方法 魔方方法总是被双下划线包围(如__init__),魔方方法是面向对象的python的一切 魔法方法的第一个参数应为cls(类方法)或者self(实例方法) cls:代表一个类的名称 se ...

  6. 从零开始学Python编程之魔法方法

    大家好,我是岛上程序猿,欢迎关注! Python中的魔法方法是一种特殊方法,以双下划线开头和结尾,并且可以在类定义中定义,用于执行特定的操作.在本文中,我们将介绍魔法方法的作用.如何使用它们以及Pyt ...

  7. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  8. python画春节_过年,大家都在集五福,程序员整理了2018年python学习路线及方法...

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Perl语言一样, Pytho ...

  9. python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法

    常用魔法方法 含义 __new__(cls[,...]) 1.__new__在对象被实例化时调用 2.第一个参数是类本身,其他参数传入__init__中 3.__new__如果没有返回值,则不会调用_ ...

最新文章

  1. python 读取csv文件生成散点图
  2. python一千行入门代码-Python – 一次从文件中读取1000行
  3. JQuery 总结(4) DOM操作
  4. 自定义EventSource(二)PollingCounter
  5. 巴比伦算法求平方根c语言,巴比伦算法求平方根
  6. 服务器热修复,热修复探究,hotfix,patch
  7. 空闲队列函数排队 requestIdleCallback
  8. Git_自定义Git
  9. 试读《JavaScript语言精粹(修订版)》
  10. 基于Spring开发的一个BIO-RPC框架(对小白很友好)
  11. php讲一个正整数前补0,php 数字补零的两种的简单示例
  12. C语言中心对称图形定义,中心对称图形的定义
  13. magic2410支持大容量sdhc卡解决办法
  14. 求n的阶乘问题。输入一个正整数n,输出n!
  15. python小游戏:教你如何称霸朋友圈
  16. Vue首屏加载等待动画
  17. kubernetes 入门实践
  18. leaflet移动图标(leaflet篇.68)
  19. 淘宝小程序 表单组件checkbox的默认样式修改
  20. python使用pyechart快速绘制各类可视化表格-包括带平均线的折线图、雷达图等等,超实用!(不断更新)

热门文章

  1. 【WP】2021虎符
  2. 晶体生长计算机实验报告,制作晶体实验报告
  3. js百度地图计算点与折线最短距离
  4. 分享 | .NET Framework升级到.NET 5
  5. 热电链条式炉排热水锅炉项目DCS组态方案
  6. 安排电影院座位--贪心算法
  7. 航电 2212 java AC
  8. 用动态规划法求解TSP问题
  9. 图形学实验三 贝塞尔曲线、旋转曲面、扫掠曲面
  10. 8.Linux文件管理命令---head显示文件头部--tail显示文件尾部