第2章课后习题笔记——数据结构算法 Python语言描述(裘宗燕)

  1. 复习下面概念:
    • 抽象数据类型:在编程中使用一种对象时,只需考虑应该如何使用,不需要去关注和触及对象的内部表示。这样的数据对象就是一种抽象数据单元,一组这样的对象构成一个抽象的数据类型,为程序的使用提供一套功能。
    • 接口:提供模块使用是所需的所有信息。
    • 不变类型:如果某个类型只提供了构造操作、解析操作,未提供变动操作,那么该类型的对象在创建后就不会变化,永远处于固定的状态。
    • 可变类型:如果摸个类型提供了变动操作,对该类型的对象执行这种操作后,虽然对象依旧,但其内部状态已经改变。
    • self参数:表示当前类。
    • 初始化方法:用__init__方法表示,在构造本类新对象时,自动调用该方法,一般用作
      初始化对象属性。
    • 静态方法:①函数定义的头部行之前加修饰符@staticmethod,②参数列表中没有self参数,③可以使用类名.方法对象.方法调用。本质上,静态方法就是定义在类中的普通函数。
    • 类方法:①函数定义的头部行之前加修饰符@classmethod,②必须有其调用类的参数,习惯用cls作为参数,可添加多个参数。
    • 实例变量:实例对象中的数据属性。
    • 私有变量:只允许在类的内部访问,不允许在类定义之外使用。习惯将一个下划线开头的名字作为私有变量。
    • Python的特殊方法名:以两个下划线开始,以两个下划线结束,Python中为所有运算符定义了特殊方法名。
    • 函数super():用在派生类(子类)的方法定义中,从该类的直接基类做属性检索。采用super函数而不直接写具体基类的名字,使得查找的过程更加灵活。
  2. 请列举出数据类型的三大操作,说明它们的意义和作用
    • 构造操作:基于已知信息,产生该类型的新对象
    • 解析操作:从一个对象取得有用信息,其结果反映了被操作对象的某方面特性,但结果并不是本类型对象。
    • 变动操作:修改被操作对象的内部状态。
  3. 为什么需要初始化函数?其重要意义和作用什么?
    • 在创建对象时,自动初始化对象属性,无需设置对象属性,方便对象快速创建。
  4. 设法说明在实际中某些类型应该定义为不变类型,另一些类型应该定义为可变类型。请各举出两个例子。
    • 不变类型:python中的str、tuple类型,设定后无法更改
    • 可变类型:python中的list、set类型,可以根据需要改变
  5. 请简要说明在定义一个数据类型时应该考虑哪些问题?
    • 涉及的数据类型操作、确定类型名、数据的类型的功能及对应的描述方式。
  6. 请解释并比较类定义中的三类方法:实例方法、静态方法、类方法。
    • 实例方法:操作对象(实例)中数据的方法

      def func(self):
          # 实例方法,操作的数据, 是实例中的数据
      
    • 静态方法:①函数定义的头部行之前加修饰符@staticmethod,②参数列表中没有self参数,③可以使用类名.方法对象.方法调用。本质上,静态方法就是定义在类中的普通函数。

      @staticmethod
      def func(self):
          # 普通函数
      
    • 类方法:①函数定义的头部行之前加修饰符@classmethod,②必须有其调用类的参数,习惯用cls作为参数,可添加多个参数。

      @classmethod
      def func(cls):
          # 用类方法实现与本类所有对象有关的操作
      
  7. 列出Python编程中有关类属性命名的约定
    • 类:首字母大写,如:AaaBbb
    • 属性:全小写加_ (或者第一个单词小写,后面单词首字母大写),如aaa_bbb_ccc,aaaBbbCcc
  8. 补充

    类专有方法(Python中通过约定一些专有的方法来增强类的功能)

    __init__:构造函数,在生成对象时调用(实例变量也在此函数中定义);
    
    __del__:析构函数,释放对象时使用;
    
    __repr__:打印(若有__str__,则先尝试str),转换;
    
    __setitem__:按照索引赋值;
    
    __getitem__:按照索引取值;
    
    __len__:获取长度,内置函数len()使用;
    
    __call__:函数调用(对象看作一个算子)reprstrrepr()str()为内置函数,对应类中的__repr__与__str__来处理字符串:
    repr对Python(程序员)友好,生成的字符串应可通过eval()重构对象;
    str为用户友好,方便用户理解的输出;
    print时先查看__str__,若未定义,再查看__repr__;
    
    运算符未列出:__add__:加运算........
    
    
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值