13.5 实例
如果说类是一种数据结构定义类型,那么实例则声明了一个这种类型的变量。实例是这些主要用在运行期时的对象,类被实例化得到实例,该实例的类型就是这个被实例化的类。
13.5.2 __init__()“构造器”方法
当类被调用,实例化的第一步是创建实例对象。一旦对象创建了,Python检查是否实现了__init__()方法。默认情况下,如果没有定义(或覆盖)特殊方法__init(),对实例不会施加任何特别的操作。任何所需的特定操作,都需要程序员实现__init__(),覆盖它的默认行为。如果__init__()没有实现,则返回它的对象,实例化过程完毕。
如果__init__()已经被实现,那么它将被调用,实例对象作为第一个参数(self)被传递进去,像标准方法调用一样。把创建实例的调用当成是对构造器的调用。
总之,(a)你没有通过调用new来创建实例,你也没有定义一个构造器。是Python为你创建了对象;(b)__init__(),是在解释器为你创建一个实例后调用的第一个方法,在你开始使用它之前,这一步可以让你做些准备工作。
13.5.3 __new__()“构造器”方法
与__init__()相比,__new__()方法更像一个真正的构造器。
解释器调用类的__new__()方法,一个静态方法,并且传入的参数是类实例化操作时生成的。
__new__()必须返回一个合法的实例,这样解释器在调用__init__()时,就可以把这个实例作为self传给它。
13.5.4 __del__‘’解构器“方法
有一个相应的特殊解构器(destructor)方法名为__del__()。然而,由于Python具有垃圾对象回收机制(靠引用计数),这个函数要直到该实例对象所有的引用都被清除掉后才会执行。Python中的解构器是在实例释放前提供特殊处理功能的方法,它们通常没有被实现,因为实例很少被显式释放。
解构器只能被调用一次,一旦引用计数为0,则对象就被清除了。这非常合理,因为系统中任何对象都只被分配及解构一次。
总结:
1. 不要忘记首先调用父类的__del__()。
2. 调用del x不表示调用了x.__del__(),它仅仅是减少x的引用计数。
3. 尽量不要去实现__del__()。
分享到:
相关推荐
本书《面向对象编程:C++与Java比较教程》详细比较和对比了当今最流行的两种编程语言C++和Java,旨在教授互联网时代至关重要的技能和面向对象编程技术。作者Avinash C. Kak凭借其成功教授的课程,撰写了一本全面的...
多态是 Java 面向对象编程的第三大特征,通过重载、重写与覆盖,实现不同类的不同形态特征。多态使得类可以根据不同的情况表现出不同的形态,从而提高代码的灵活性和可维护性。 四、类和对象 类是 Java 面向对象...
总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...
十、面向对象编程的优点 面向对象编程的优点包括便于程序模拟现实世界中的实体、隐藏细节、对象的行为和属性被封装在类中、可重用等。 十一、数据类型 数据类型包括基本数据类型和引用数据类型。基本数据类型没有...
2. **封装**:封装是面向对象编程的三大特性之一,它隐藏了对象的内部实现细节,只对外提供公共接口。源代码中可能通过访问修饰符(如private、public、protected)来实现数据封装。 3. **继承**:继承允许一个类...
第13章 容器和泛型.pptx 第14章 流与文件(1).pptx 第14章 流与文件(2).pptx 第15章 网络编程.pptx 第1章 Java概述.pptx 第2章 Java基础.pptx 第3章 数组.pptx 第4章 类和对象(1).pptx 第4章 类和对象(2)....
面向对象编程技术第四章PPT资料.pptx 面向对象编程技术是现代软件开发中最重要的技术之一。本章节主要讲解面向对象编程技术的基本概念和实现方法。下面是从PPT资料中提取的知识点: 一、类与对象 * 类是具有相同...
面向对象的Java网络编程 \chap03 提供了本书第3章的范例源程序; \chap04 提供了本书第4章的范例源程序; \chap05 提供了本书第5章的范例源程序; \chap06 提供了本书第6章的范例源程序; \chap07 ...
《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型C++组件,以及如何使用这些组件来构建多线程架构。第2、3、4章简要介绍进程、线程、多...
本章节——第十一章案例,旨在通过实际操作来巩固和拓展学员对于面向对象编程的理解。 面向对象编程(Object-Oriented Programming,简称OOP)基于“对象”的概念,将数据和操作数据的方法封装在一起。在Java中,类...
第三章Delphi面向对象编程思想 第九章对话框 第二章Delphi语法基础 第五章VCL组件应用 第八章VCL组件应用续2 第六章VCL组件应用续1 第十一章文件操作和管理 第十三章数据库编程 第十二章图形图像和多媒体技术 第十章...
面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7...
《Visual C++ 面向对象编程教程》是王育坚编著的一本针对C++初学者的指导书籍,旨在帮助读者深入理解C++语言,特别是其面向对象编程(Object-Oriented Programming, OOP)的概念和技术。C++是一种强大的、通用的编程...
- **第13题**: BC - 面向对象编程中异常处理的重要性。 #### 编程二 - **第1题**: B - 类与对象的关系。 - **第2题**: B - 继承与多态的关系。 - **第3题**: A - 封装的好处。 - **第4题**: B - 多态性的实现机制。...
Java面向对象编程是Java语言的核心特性之一,由孙卫琴老师讲授的这门课程深入浅出地介绍了这一主题。课后答案集包含了对课程中习题的详细解答,是学习者巩固理论知识、提升实践技能的重要参考资料。下面将详细阐述...
希望通过电子书了解了本书第一版内容并对其感兴趣的读者能够购买《Java面向对象编程》最新的第二版,相信它一定不会让你失望。呵呵,这也算是对矢志投身中国Java编程普及教育的孙老师的一点支持吧。。。
Scala编程详解:数组操作之数组转换 共5页第11讲-Scala编程详解:Map与Tuple 共8页第12讲-Scala编程详解:面向对象编程之类 共12页第13讲-Scala编程详解:面向对象编程之对象 共9页第14讲-Scala编程详解:面向对象...
类是面向对象编程的基础,它定义了一组属性(数据成员)和行为(成员函数)。在MATLAB中,通过`classdef`关键字创建类。例如: ```matlab classdef MyClass properties property1 property2 end methods ...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作数据的方法封装在一起。在《面向对象编程揭秘》这本书中,作者金旭亮深入剖析了这一编程思想的核心原理与...