Python课件PPT:第7章 对象与类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 对象与类
本章内容
7.1 理解面向对象程序设计 7.2 类的定义 7.3 类的构造方法和内置属性 7.4 类实例 7.5 类的内置方法 7.6 重载运算符 7.7 类的继承 7.8 类的多态 7.10 类的封装 7.11 Python的垃圾回收机制
7.1 理解面向对象程序设计
7.3 类的构造方法和内置属性
所谓构造方法(constructor)就是创建对象时, 对象本身所运行的函数。Python使用 __init__()函数作为对象的构造方法。当用户 要在对象内指向对象本身时,可以使用self 关键字。Python的self关键字与C++的this 关键字一样,都是代表对象本身。
7.2 类的定义
类是一个用户定义类型,与其他大多数的计 算机语言一样,Python使用关键字class来 定义类。语法格式如下:
class <ClassName>: '类的帮助信息' #类文档字符串 class_suite #类体 其中,ClassName为类的名称;类的帮助
信 息 可 以 通 过 ClassName.__doc__ 查 看 ; class_suite 由类成员,方法,数据属性组成。
由于使用动态数据类型,Python必须等到运行该函数 时才知道该函数的类型。这种特性称为运行期绑定 (runtime binding)。
C++将多态(polymorphism)称为方法重载(method overloading),C++可以允许类内有许多个相同的名 称、却有不同参数的函数存在。
7.9 类的封装
过封装的数据能够确保信息的隐密性。 ⑵ 继承(inheritance):通过继承的特性,衍生类(derived class)
继承了其基础类(base class)的成员变量(data member)与类方法 (class method)。衍生类也叫做次类(subclass),或是子类(child class)。基础类也叫做父类(parent class)。 ⑶ 多态(polymorphism):多态允许一个函数,有许多种不同的接 口。依照调用函数时使用的参数,类知道使用哪一种接口。 Python使用动态类型(dynamic typing),与后期绑定(late binding)来做到多态的功能。
派生类的语法如下所示:
class <类名称> [(基类1,基类2, ...)]:
[“文件字符串”]
<语句>
一个衍生类可以同时继承自许多个基类,基类之间以逗号(,)隔开。
7.8 类的多态
所谓类的多态(polymorphism),就是类可以有许多个 相同名称,但参数类型不同的函数。Python并没有明 显的多态特性,因为Python函数的参数不必声明数据 类型。但是利用动态数据类型(dynamic typing), Python仍然可以处理对象的多态。
7.6 重载运算符
上一节讲述的类的内置方法中,有许多是用 来替换运算符的功能,这种特性称为重载运 算符(overloading operator)。例如:
⑴ __add__(a, b)方法等于a + b。 ⑵ __sub__(a, b)方法等于a – b。 ⑶ __mul__(a, b)方法等于a * b。 ⑷ __ mod__(a, b)方法等于a % b
7.7 类的继承
所谓类的继承(inheritance),就是新类继承旧类的属性与方法,这种行为 称为派生子类(subclassing)。继承的新类称为派生类(derived class),被 继承的旧类则称为基类(base class)。当用户创建派生类后,就可以在派 生类内新增或是改写基类的任何方法。
人们将对象的静态特征抽象为属性,用数据来描述,在 Python语言中称之为变量,将对象的动态特征抽象为 行为,用一组代码来表示,完成对数据的操作,在 Python语言中称之为方法(method)。一个对象由 一组属性和一系列对属性进行操作的方法构成。
7.1.2 面向对象的特征
下列是面向对象程序的主要特性: ⑴ 封装(encapsulation):数据仅能通过一组接口函数来存取,经
对象的方式存储。__dict__属性为此字典对 象的值。 ⑵ obj.__class__:__class__属性返回创建此 类实例所用的类名称。
7.5 类的内置方法
类本身有许多的内置方法,这些内置方法的开头与结尾 都是双底线字符。
⑴ __init__(self):这是类的构造方法,当创建一个类的 实例时,就会调用此方法。
所谓类的封装(encapsulation),就是类将其属 性(变量与方法)封装在该类内。只有该类中的 成员,可以使用到该类中的其他成员。这种被 封装的变量与方法,称为该类的私有变量 (private variable)与私有方法(private method)。
Python类中的所有变量与方法,都是公用的 (public)。只要知道该类的名称,与该变量或是 方法的名称,任何外部的对象都可以直接存取 类中的属性与方法。
7.1.1 什么是对象 7.1.2 面向对象的特征 7.1.3 什么是类
பைடு நூலகம்
7.1.1 什么是对象
对象是类的实例化。对象的特征分为静态特征和动态特 征两种。静态特征指对象的外观、性质、属性等。动态 特征指对象具有的功能、行为等。客观事物是错综复杂 的,但人们总是从某一目的出发,运用抽象分析的能力 ,从众多的特征中抽取最具代表性、最能反映对象本质 的若干特征加以详细研究。
⑵ __str__(self):此方法被内置函数str()与print函数调 用。用来设置对象以字符串类型出现时如何显示, __str__()函数的返回值是一个字符串对象。
⑶ __repr__(self):此方法被repr()内置函数调用,此函 数可以让对象以可读的形式出现。
⑷ __getattr__(self, name):此方法用在读取或是修改 不存在的成员属性的时候。
7.4 类实例
7.4.1 创建类实例 7.4.2 类实例的内置属性
7.4.1 创建类实例
要创建一个类实例时,只要指定变量给类名 称即可。例如:
>>>f = Fruit() f即是一个类实例变量,注意类名称之后
须加上小括号。
7.4.2 类实例的内置属性
所有Python的类实例,都具有下列属性: ⑴ obj.__dict__:类实例内的属性是以字典
7.1.3 什么是类
类是一个抽象的概念,要利用类的方式来解决 问题,必须用类创建一个实例化的对象,然后 通过对象去访问类的成员变量,去调用类的成 员方法来实现程序的功能。就如同“手机”本 身是一个抽象的概念,只有使用了一个具体的 手机,才能感受到手机的功能。
类(class)的定义是使用封装的数据,以及操作 这些数据的接口函数,所组成的一群对象的集 合。类可以说是,创建对象时所用的模板 (template)。
7.10 Python的垃圾回收机制
Python使用了引用计数这一简单技术来跟 踪和回收垃圾。在Python内部,有一个内 部跟踪变量,记录着所有使用中的对象各有 多少引用,称为一个引用计数器。
当对象被创建时,就创建了一个引用计数, 当这个对象不再需要时,这个对象的引用计 数变为0时,它被垃圾回收。但是回收不是" 立即"的,由解释器在适当的时机,将垃圾 对象占用的内存空间回收。
相关文档
最新文档