2021-04-15 COMP9021第十六节课笔记

这节课主要内容讲的是自定义一个类。

1. 自定义类

自定义类异常

官方文档:Handling Exceptions
其实就是新建一个Exception的子类。Exception这个类是python自带的。

  1. 自定义的类
    [27]是新建的Exception子类。
    [28]raise一下这个异常类,括号中是提示信息。
    [29]是出现异常时打印的信息,最后一行就是[28]刚刚传进去的字符串。
    如果[28]的括号什么都不写,就什么都没有。

在这里插入图片描述
2. 试了试,括号里的不一定是字符串,应该只要是合法字符就可以。
在这里插入图片描述
3. 正常使用
在这里插入图片描述
4. 只打印传进去的参数

在这里插入图片描述

类的继承

  • 和前面一样,就是在类的括号里加上父类名字。
    如图:
    [79]的test1没有继承任何东西,所以[80]调用base的时候,父类是Object.
    [79]的test2继承了test1,所以test2可以调用test1的类方法。[81]调用base的时候,可以看到其父类是test1
    在这里插入图片描述
  • 把test1中的类方法重载一下。
    在这里插入图片描述

2.类属性

  1. 正常情况下没啥可说的,就正常使用。
    在这里插入图片描述
  2. 在类外面添加属性
    果然,我读的书还是太少了,类属性居然可以这样加。。。
    这是要把C++的类和matlab的struct完美结合起来吗????
    在这里插入图片描述
  3. 删除类属性
    不仅能添加,还能删除。。。。
    在这里插入图片描述

3. __repr__ 和 __str__

__repr__

官方文档:object.repr
前一篇文章已经讲过str了,在文章的最下面。链接在这里:对象

  1. 返回值必须是字符串
  2. 如果有自定义(重载)这个函数,则返回自定义的字符串
  3. 如果没有重载这个函数,则返回对象的地址

repr函数

官方文档:repr
用来检验__repr__函数的

  1. 调用类的__repr__函数,会输出一个字符串。
    在这里插入图片描述
  2. 自定义__repr__和__str__
    在这里插入图片描述

4. 检验repr和str的效果

话不多说,直接上结果,自己看。
橙色是repr函数的,蓝色是str函数的。

repr和str同时存在

在这里插入图片描述

仅定义repr

在这里插入图片描述

仅定义str

在这里插入图片描述

5. 小练习

List的__getitem__和__len__

在这里插入图片描述

一个类属性的值是另一个类实例

在这里插入图片描述

类的嵌套

咋说,套娃吧。
在这里插入图片描述

isinstance函数检验是不是某个类的实例

在这里插入图片描述
因为test2是继承的test1,所以可以看到:A的类型是test2,但既是test2的实例,也是test1的实例。
在这里插入图片描述

创建一个二元素集合的类

  1. 继承了Set这个父类。
  2. 有两个元素:a, b
  3. 重载了contains, len, iter的类方法。
    在这里插入图片描述
    原来集合的迭代取值是用yield输出的。。。难怪集合的输出可能乱序。

6. 函数传参

用 * 传递可变参数

  1. 正常使用, 默认参数放在可变参数后面
    【】
  2. 其他参数不能放在可变参数后面, 会被识别到可变参数内
    在这里插入图片描述

*的特殊作用

  1. 函数的参数列表里有star,但是不传递任何参数。这种情况下,直接调用函数的时候会报错。
    在这里插入图片描述
    在这里插入图片描述
  2. 好处:强制用户输入参数对应的值,不然就报错。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值