抽象数据类型与类

抽象数据类型与类

1.抽象数据类型是一个由对象以及对象上的操作组成的集合,对象和操作被捆绑为一个整体,可以从程序的一个部分传递到另一个部分。
2.分解和抽象可以使程序易于修改,以控制程序的复杂度,分解使程序具有结构,抽象则隐藏细节

程序实例

class IntSet(object):
    """IntSet是一个整数集合"""
    #关于实现(不是抽象)的信息
    #集合的值由一个整数数组self.vals表示。
    #集合中的每个整数在self.vals中只出现一次。

    def __init__(self):
        """创建一个空的整数集合"""
        self.vals = []

    def insert(self, e):
        """假设e是整数,将e插入self"""
        if e not in self.vals:
        self.vals.append(e)
    def member(self, e):
        """假设e是整数
        如果e在self中,则返回True,否则返回False"""
        return e in self.vals
    def remove(self, e):
        """假设e是整数,从self中删除e
        如果e不在self中,则抛出ValueError异常"""
        try:
            self.vals.remove(e)
        except:
            raise ValueError(str(e) + ' not found')
    def getMembers(self):
        """返回一个包含self中元素的列表
        对元素不进行排序"""
        return self.vals[:]
    def __str__(self):
        """返回一个表示self的字符串"""
        self.vals.sort()
        result = ''
        for e in self.vals:
        result = result + str(e) + ','
        return '{' + result[:-1] + '}' #-1 可以忽略最后的逗号

分析

1.类定义会创建一个type类型的对象
2.类定义中存在一个函数定义时,被定义的函数称为方法,并与这个类相关联,这些方法有时称为类的方法属性
    类支持两种操作:
    *实例化:创建类的实例;eg s = IntSet()会创建一个新的IntSet类型的对象,这就是一个实例化
    *属性引用:通过点标记法访问与类关联的属性。eg s.member表示IntSet类型的实例s关联的member方法
每个类定义都以保留字class开头,后面是类名和其他信息,表明这个类是如何与其他类相关联的。

3.每一个类被实例化,都会调用该类中定义的__init__方法 eg s = IntSet(),解释器会创建一个IntSet类型的新实例,然后调用IntSet.__init__方法,并使用新创建的对象作为实参,绑定到形参self上。IntSet.__init__被调用时,会创建一个list类型的对象vals,这个对象会成为IntSet类型的实例的一部分,这个列表称为IntSet实例的数据属性。
4.方法属性定义在类定义中;
  数据属性被关联到类时,我们将其称为类变量;数据属性被关联到实例时,我们将其称为实例变量;

继承

object类在最顶层
子类可以继承父类的所有属性,除了继承属性之外,子类还可以添加新的属性,覆盖也就是替换超类中的属性。
注意:子类覆盖超类时,超类的重要行为必须被所有子类支持。

转载于:https://www.cnblogs.com/monkeyT/p/9496239.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值