给自己好好上一课 数据结构与算法课 抽象数据类型和面向对象编程

#给自己好好上一课 数据结构与算法课
#抽象数据类型和面向对象编程

#代码实现Bag类
class Bag(object):
    def __init__(self, maxsize = 10):   #给出最大容量
        self.maxsize = maxsize
        self._items = list()    #容器类型使用列表

    def add(self, item):    #定义一个add操作
        if len(self) > self.maxsize:
            raise Exception('Bag is full')    #抛出异常
        self._items.append(item)

    def remove(self, item):
        self._items.remove(item)

    def __len__(self):
        return len(self._items)

    def __iter__(self):
        for item in self._items:
            yield item    #带有yield的是生成器函数

def test_bag():    #定义一个测试类
    bag = Bag()

    bag.add(1)
    bag.add(2)
    bag.add(3)

    assert len(bag) == 3    #assert叫做断言

    bag.remove(3)
    assert len(bag) == 2

    for i in bag:
        print(i)

从这里可以扩展学习的有:

1.抛出异常:

python使用 raise 语句抛出一个指定的异常。

raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。

例如:上面的代码中

raise Exception('Bag is full')就是一个很好的应用,或者有异常的实例或者异常的类,比如类似以下这种格式。

def temp():

    pass

raise temp('pass')

 

2.yield关键字:

带有yield关键字的函数就不是一个简单的函数,而是一个生成器。比如上面的__iter__()就相当于一个生成器。

在之前发过的博文里有一篇关于生成器的文章已做过详细描述,此处附上路径:

https://blog.csdn.net/honorwh/article/details/89314032

 

3.测试类的测试方法:

此处使用的是python的pytest模块,没有的可通过sudo apt-get install pytest安装

然后在shell里面输入pytest 文件名.py即可测试

如果是通过会提示passed字样,如果报错也有相关提示。

 

4.对于单双下划线的区别:

在之前的面试题1-10里面的第七题有提及,这里也同样附上路径:

https://blog.csdn.net/honorwh/article/details/89313046

下篇讲的是建立一个类实现数组操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值