零基础入门学习Python(21):魔法方法(1)构造和析构

从这节开始,我们介绍下Python的魔法方法:魔法方法总是被双下划线包围。
之前有提到过初始化的魔法方法__init__(),它返回None,在类定义时有时写__init__()方法,有时不写,只有当我们需要对一个对象进行初始化操作时,才会重写__init__()方法。

>>> class Rectangle:def __init__(self,x,y):        #默认是没有参数的,但这里需要传入两个参数,即需求,所以重写了__init__方法self.x = xself.y = ydef area(self):return self.x * self.y>>> rect = Rectangle(2,3)
>>> rect.area()
6

下面介绍另一个初始化的魔法方法,实际上,下面这个魔法方法才是创建对象时第一个要调用的方法:
__new__(cls[, ...]): 是对象实例化的时候所调用的第一个方法,它第一个参数是 class ,后面有其他参数时,会原封不动的传给__init__()方法,很少被重写。
1)需要一个实例对象作为返回值;
2)当继承一个不可变类型,又需要进行修改的时候,重写

>>> class SortedList(list):           #继承列表,list是不可修改的def __new__(cls, list1):      #传入一个列表list1list1 = list.sort(list1)  #调用列表的内置方法sort(),把list1重写之后,让list调用return list.__new__(cls,list1)     #返回一个实例对象>>> l = SortedList([3,4,2,8,6,10,3,5])
>>> l                                 #重写之后,直接调用就可以得到排序之后的列表
[2, 3, 3, 4, 5, 6, 8, 10]

最后再介绍一下Python中的析构器:
__del__(self) : 析构器,对象生成之后,当所有对它的引用都被 del 之后,会启动垃圾回收机制,当垃圾回收机制销毁对象的时候,就会调用这个方法。

>>> class Test:def __init__(self):print(' I am __init__ method, I am being called...')def __del__(self):print(' I am __del__ method, I am being called...')>>> c1 = C()                         #生成一个实例化对象c1,调用了__init__()方法I am __init__ method, I am being called...
>>> c2 = c1                          #c2也指向c1这个对象的内存
>>> c3 = c2                          #c3也指向c1这个对象的内存,即此时有3个名字指向同一块内存区域
>>> del c3
>>> del c2
>>> del c1                           #删除出c3、c2、c1之后,没有名字再指向这个内存了,所以就自动调用了__del__魔法方法来销毁这个对象I am __del__ method, I am being called...

零基础入门学习Python(20)对象(5)类和对象的内置函数

零基础入门学习Python(21):魔法方法(1)构造和析构相关推荐

  1. 零基础学python pdf-笔记《零基础入门学习Python(第2版)》PDF+课件+代码分析

    通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目 ...

  2. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版

    Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...

  3. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  4. 零基础python必背代码-零基础入门学习python 96集全

    零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...

  5. 零基础入门python小甲鱼-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  6. python零基础入门教程百度云-小甲鱼零基础入门学习Python百度云下载 | 宅男君

    Python编程语言可以在不同平台上使用,比如Windows.MAC.Linux操作系统.通常情况下,一个Python程序在你自己的Windows系统上运行,也可以在别人的MAC系统上运行.Pytho ...

  7. 小甲鱼python教程视频怎么样-小甲鱼零基础入门学习Python视频教程全套96集

    资源介绍 教程名称: 小甲鱼零基础入门学习Python视频教程全套96集 课程简介: xa0 xa0 Python具有跨平台特点,Python可以在各种不同类型的计算机上运行,Windows.MAC. ...

  8. 《零基础入门学习Python》学习笔记(1-25)

    参考:<零基础入门学习python>http://edu.csdn.net/course/detail/906?locationNum=1&fps=1&ref=srch&a ...

  9. 第031讲:永久存储,腌制一缸美味的泡菜 | 学习记录(小甲鱼零基础入门学习Python)

    (标答出处: 鱼C论坛) <零基础入门学习Python> 测试题: 0.pickle的实质是什么? pickle的实质是利用一些算法,将你的数据对象腌制成二进制文件,存储在磁盘上,也可以放 ...

最新文章

  1. Hibernate之HQL数据库操作
  2. jsp mysql代码提示错误,Web工程出现错误mysql错误
  3. 让你页面速度飞起来 Web前端性能优化
  4. linux 下的文件属性,Linux 下文件属性介绍(示例代码)
  5. Unity中所有特殊的文件夹
  6. 最佳ASP.net之LINQ学习资料
  7. Win7批量压缩照片
  8. 网吧操作系统制作与优化2007最终版(转)
  9. c语言程序设计高校饭卡系统,C语言课程设计-学生饭卡管理系统(45页)-原创力文档...
  10. TFT工业串口屏方案
  11. (转)Notepad++删除空白行
  12. P236 练习1 声明另一个类的变量当属性
  13. win7计算机进行重镜像,win7镜像重装系统图文教程
  14. WIN10系统蓝屏解决方法
  15. 【历史上的今天】10 月 23 日:ipod 问世;谷歌推出 CSE 搜索服务;人机交互领域先驱诞生
  16. Java第十一章总结 枚举与泛型
  17. 新浪微博开发平台试用
  18. vlan的端口隔离及端口优化——“道高一尺魔高一丈”
  19. 双态运维联盟工作会议暨2017年度双态运维大会乌镇峰会筹备会在新华三杭州园区召开...
  20. 数据结构PTA习题:基础实验7-2.3 德才论 (25分)——排序

热门文章

  1. Google Play开发者账号注册
  2. NIPS2022上的图神经网络相关论文总结
  3. 软件体系结构网课第一次笔记
  4. Ubuntu折腾记录
  5. 资料:成为全栈dApp开发者的学习计划
  6. Cortex-M3/M4芯片启动流程概括
  7. C++ | 在职研究生(多重继承)
  8. Python 的while正反三角和(菱形)
  9. 「Slack」- 安装 @20210303
  10. Flutter ListView滚动到指定条目