zoukankan      html  css  js  c++  java
  • 数据和算法【抽象数据类型和Python类】

    抽象数据类型

      抽象数据类型(ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。抽象数据类型的基本思想是抽象,或者说是数据抽象(与函数定义实现的计算抽象或称过程抽象对应)。

    数据类型和数据构造

      类型(数据类型)是程序设计领域最重要的基本概念之一。在程序里描述的、通过计算机去处理的数据,通常都分属不同的类型,例如整数或浮点数。每个类型包含一集合法的数据对象,并规定了对这些对象的合法操作。各种编程语言都有类型的概念,每种语言都提供了一组内置数据类型,为每个内置类型提供了一批操作。

      ADT是一种思想,也是一种组织程序的技术,主要包括:

        1)围绕着一类数据定义程序模块

        2)模块的接口和实现分离

        3)在需要实现时,从所用的变成语言里选择一套合适的机制,采用合理的技术,实现这种ADT的功能,包括具体的数据表示和操作。

    Python类

      略过...

    python类里面函数第一个形参self的解释:

       如果在程序里通过某个类C的实例对象o,以属性引用的形式调用类C里定义的方法函数m,python解释器就会创建一个方法对象,把实例对象o和方法函数m约束在这个方法对象里。在执行这个方法对象时,o就会被作为函数m的第一个实参。在函数m的定义里通过形参self的属性访问,都实现为对调用对象o的属性访问。

          o.m(...)    ===    C.m(o,....)       

    检查两个类是否具有继承关系

        issubclass(class1, class2)

     方法查找

      

       由于C类里没有f定义,c.f()实际调用的是B类里定义的f。由于在f的定义里出现了调用self.g,现在出现了一个问题:如何确定应该调用的函数g?由于C类里没有f的定义,按规则应该到C类的基类中去查找f。在C的基类B里找到了f的定义,因此应该执行它,而在B.f函数里面出现了self.g(),由于当时self的值是一个C类的实例对象,确定g的工作再次从调用对象所属的C类开始进行,由于C类里存在函数g的定义,它就是应该调用的方法。

    标准函数super()

      Python提供了一个内置函数super,把它用在派生类的方法定义里,就是要求从这个类的直接基类开始做属性检索(而不是从这个类本身开始查找)。采用super函数而不直接写具体基类的名字,产生的查找过程更加灵活。如果直接写基类的名字,无论在什么情况下执行,总是调用该基类的方法,而如果写super(),Python解释器将根据当前类的情况去找到相应的基类,自动确定究竟应该使用哪个基类的属性。

      super().m()      从基类开始查找m

      super(C, obj).m()     从指定的类C的基类开始查找,obj必须是C的一个实例,并且作为m的第一个参数self

     

    人生就是要不断折腾
  • 相关阅读:
    for循环实战性能优化
    MySQL group_concat 介绍
    MySQL 取分组后每组的最新记录
    MySQL查询top N记录
    常用SQL之日期格式化和查询重复数据
    Java 8 ThreadLocal 源码解析
    避免创建不必要的对象
    IntelliJ IDEA 设置忽略SVN文件和文件夹
    scrapy+selenium+chromedriver解析动态渲染页面
    java读取excel或者csv时日期格式数据处理
  • 原文地址:https://www.cnblogs.com/xiangxiaolin/p/13407391.html
Copyright © 2011-2022 走看看