-
复习下面概念:
- 抽象数据类型:在编程中使用一种对象时,只需考虑应该如何使用,不需要去关注和触及对象的内部表示。这样的数据对象就是一种抽象数据单元,一组这样的对象构成一个抽象的数据类型,为程序的使用提供一套功能。
- 接口:提供模块使用是所需的所有信息。
- 不变类型:如果某个类型只提供了构造操作、解析操作,未提供变动操作,那么该类型的对象在创建后就不会变化,永远处于固定的状态。
- 可变类型:如果摸个类型提供了变动操作,对该类型的对象执行这种操作后,虽然对象依旧,但其内部状态已经改变。
- self参数:表示当前类。
- 初始化方法:用
__init__
方法表示,在构造本类新对象时,自动调用该方法,一般用作
初始化对象属性。 - 静态方法:①函数定义的头部行之前加修饰符
@staticmethod
,②参数列表中没有self参数,③可以使用类名.方法
或对象.方法
调用。本质上,静态方法就是定义在类中的普通函数。 - 类方法:①函数定义的头部行之前加修饰符
@classmethod
,②必须有其调用类的参数,习惯用cls
作为参数,可添加多个参数。 - 实例变量:实例对象中的数据属性。
- 私有变量:只允许在类的内部访问,不允许在类定义之外使用。习惯将一个下划线开头的名字作为私有变量。
- Python的特殊方法名:以两个下划线开始,以两个下划线结束,Python中为所有运算符定义了特殊方法名。
- 函数super():用在派生类(子类)的方法定义中,从该类的直接基类做属性检索。采用super函数而不直接写具体基类的名字,使得查找的过程更加灵活。
-
请列举出数据类型的三大操作,说明它们的意义和作用
- 构造操作:基于已知信息,产生该类型的新对象
- 解析操作:从一个对象取得有用信息,其结果反映了被操作对象的某方面特性,但结果并不是本类型对象。
- 变动操作:修改被操作对象的内部状态。
-
为什么需要初始化函数?其重要意义和作用什么?
- 在创建对象时,自动初始化对象属性,无需设置对象属性,方便对象快速创建。
-
设法说明在实际中某些类型应该定义为不变类型,另一些类型应该定义为可变类型。请各举出两个例子。
- 不变类型:python中的str、tuple类型,设定后无法更改
- 可变类型:python中的list、set类型,可以根据需要改变
-
请简要说明在定义一个数据类型时应该考虑哪些问题?
- 涉及的数据类型操作、确定类型名、数据的类型的功能及对应的描述方式。
-
略
-
请解释并比较类定义中的三类方法:实例方法、静态方法、类方法。
-
实例方法:操作对象(实例)中数据的方法
def func(self): # 实例方法,操作的数据, 是实例中的数据
-
静态方法:①函数定义的头部行之前加修饰符
@staticmethod
,②参数列表中没有self参数,③可以使用类名.方法
或对象.方法
调用。本质上,静态方法就是定义在类中的普通函数。@staticmethod def func(self): # 普通函数
-
类方法:①函数定义的头部行之前加修饰符
@classmethod
,②必须有其调用类的参数,习惯用cls
作为参数,可添加多个参数。@classmethod def func(cls): # 用类方法实现与本类所有对象有关的操作
-
-
列出Python编程中有关类属性命名的约定
- 类:首字母大写,如:AaaBbb
- 属性:全小写加_ (或者第一个单词小写,后面单词首字母大写),如aaa_bbb_ccc,aaaBbbCcc
-
略
-
略
-
补充
类专有方法(Python中通过约定一些专有的方法来增强类的功能)
__init__:构造函数,在生成对象时调用(实例变量也在此函数中定义); __del__:析构函数,释放对象时使用; __repr__:打印(若有__str__,则先尝试str),转换; __setitem__:按照索引赋值; __getitem__:按照索引取值; __len__:获取长度,内置函数len()使用; __call__:函数调用(对象看作一个算子); repr与str:repr()与str()为内置函数,对应类中的__repr__与__str__来处理字符串: repr对Python(程序员)友好,生成的字符串应可通过eval()重构对象; str为用户友好,方便用户理解的输出; print时先查看__str__,若未定义,再查看__repr__; 运算符未列出:__add__:加运算........
第2章课后习题笔记——数据结构算法 Python语言描述(裘宗燕)
猜你喜欢
转载自blog.csdn.net/weixin_44912159/article/details/115006976
今日推荐
周排行