概述
第2章 抽象数据类型和Python类
2.1 抽象数据类型
抽象数据类型(Abstract Data Type,ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。ADT的基本思想是抽象,或者说是数据抽象(与函数定义实现的计算抽象或称过程抽象对应。)
2.1.1 数据类型和数据构造
以Python为例,它提供的基本类型包括逻辑类型bool、数值类型int和float等、字符串类型str,还有一些组合数据类型。例如,Python为数据的组合提供了list、tuple、set、dict等结构(它们也看做是类型),编程时可以利用它们把一组相关数据组织在一起,构成一个数据对象,作为一个整体存储、传递和处理。
2.1.2 抽象数据类型的概念
理想的情况是:在编程中使用一种对象时,只需要考虑应该如何使用,不需要(最好是根本不能)去关注和初级对象的内部表示。这样的数据对象就是一种抽象数据单元,一组这样的对象构成一个抽象的数据类型,为程序里的使用提供了一套功能。
抽象数据类型的基本想法是把数据类型定义为抽象的对象集合,只为它们定义可用的合法操作,并不暴露其内部实现的具体细节,不论是其数据的表示细节还是操作的实现细节。当然,要使用一种对象,首先需要能构造这种对象,而后能操作它们。抽象数据类型提供的操作应该满足这些要求。一个数据类型的操作通常可以分为三类:
(读者备注:以下解释了不变对象、不变类型和可变对象、可变类型)
作为数据类型,特别是比较复杂的数据类型,有一个很重要的性质被称为变动性,表示该类型的对象在创建之后是否允许发生变化。如果某个类型只提供上面的第1和第2类操作,那么该类型的对象在创建之后就不会变化,永远处于一个固定的状态。这样的类型称为不变数据类型,这种类型的对象称为不变对象。对于这种类型,在程序里只能(基于其他信息或已有对象)构造新对象或者取得已有对象的特性,不能修改已建立的对象。如果一个类型提供了第3类操作,对该类型的对象执行这种操作后,虽然对象依旧,但其内部状态已改变。这样的类型就称为可变数据类型,其对象称为可变对象。下面经常把不变数据类型和可变数据类型分别简称为不变类型和可变类型。
Python语言里的str、tuple和frozenset是不变数据类型,而list、set和dict是可变数据类型。
2.1.3 抽象数据类型的描述
(读者笔记:两个例子详细见书上。)
上面看了两个抽象数据类型的例子,现在总结其中的一些情况:
ADT是一种思想,也是一种组织程序的技术,主要包括:
1)围绕着一类数据定义程序模块,如上面的Rational和Date都是这样。
2)模块的接口和实现分离。上面只给出了模块的接口规范,包括模块名、模块提供的各个操作的名字和参数。每个操作还有非形式化的语义说明。
3)在需要实现时,从所用的编程语言里选择一套合适的机制,采用合理的技术,实现这种ADT的功能,包括具体的数据表示和操作。
2.2 Python的类
2.2.1 有理数类
2.2.2 类定义进阶
(读者笔记:这一小节提到了“静态方法”。值得一读。)
2.2.3 本书采用的ADT描述形式
2.3 类的定义和使用
2.3.1 类的基本定义和使用
类定义
类对象及其使用
2.3.2 实例对象:初始化和使用
实例对象的初始化
__init__
类实例(对象)的数据属性
最后
以上就是认真萝莉为你收集整理的《数据结构与算法-Python语言描述》读书笔记(2)第2章抽象数据类型和Python类(关键词:数据结构/算法/Python/抽象数据类型/Python类)的全部内容,希望文章能够帮你解决《数据结构与算法-Python语言描述》读书笔记(2)第2章抽象数据类型和Python类(关键词:数据结构/算法/Python/抽象数据类型/Python类)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复