小甲鱼课程

  • Post author:
  • Post category:其他




5 数据类型

在这里插入图片描述

查看某个变量的类型

在这里插入图片描述

类型之间的转换

isinstance()函数 用来比对牟变量的类型,返回值为true 或false



6 常用的操作符

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

**的用法(有关负号)

not true 返回值 true flase

3<4<5 ==(3<4)<(4<5)

在这里插入图片描述



8 了不起的分支和循环
在这里插入图片描述



9分支与循环

在这里插入图片描述

三种方法应对

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

elif== else if

方法1比方法2/3都要多消耗一部分时间

在这里插入图片描述

悬挂else 在C语言中属于C的自身语法 其和python 通过tab键来强制对其有很大不同(由程序员自己来决定)

唯一的3目

当条件为真 x的值给small ,为假的时候y的值给small

检查点的置立

assert 6>3 就会直接跳过

for循环

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

常常搭配for来使用

range 的两个参数用法

三个参数

在这里插入图片描述

下文的i的变化 只影响print里的那个i 并不对 for 后面 的 i 造成影响



11列表

在这里插入图片描述

列表里面也可以放入列表 其功能之强大

在这里插入图片描述

列表相关的添加函数

append 需要在member这个对象的作用域下(用.表示)只能在对象列表的末尾添加一个元素

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从0开始 很重要

在这里插入图片描述

列表成员的调用和交换

在这里插入图片描述

在这里插入图片描述

remove 是属于在对象列表范围下的函数 引用 member.remove(‘member 有的成员元素’)

注 remove是属于函数的 后面用( ) 不是[ ]

del 不属于函数 直接删除 某一个成员

注 del member 将会删除member这整个的对象

pop() 属于函数 会有一个删除值得返回 所以可以利用这个来被某变量给定义 默认是从尾开始删除

例如 name = member.pop()

pop 可以跟参数

在这里插入图片描述

1:3 1是指开始的位置 3是指结束的位置

3并不被包含 这样就可以分出来一个切片

在这里插入图片描述

关于 ; 前后的一些小的技巧



13 常用操作符

在这里插入图片描述

比较的是列表最前的两个数 后面的不管了

在这里插入图片描述

and 两边都为true的时候 返回值也为true

在这里插入图片描述

列表的相加 并联了

在这里插入图片描述

但是 + 号两边 必须要同类 要是添加 可以用 insert .

在这里插入图片描述

in 和 not in 的返回值。 在列表里

在这里插入图片描述

in 好像只能判断一层 和break continue 都一样

在这里插入图片描述

换个方法

在这里插入图片描述

有点类似二维数组。。
在这里插入图片描述

在这里插入图片描述

计数list3列表里面 123的数量

在这里插入图片描述

index 后面的参数 是指 从3开始到7结束 所找元素的所在位置

在这里插入图片描述

reverse() 是列表的内置函数 用来调换列表 元组里面的元素

用dir(list)可以找到所有列表内置函数 其中reverse 表示把所有的元素翻转过来

在这里插入图片描述

sort 是把里面的元素按 从小到大的排列 若要从大到小的排呢? 1:先用sort()再用reverse()

sort(reverse = flase) 这是默认的 也就是按从小到大的排 要如果改成sort(reverse = true)

在这里插入图片描述

在这里插入图片描述



重重重重重要! 关于拷贝

利用[:] 分号拷贝 就是实实在在的多弄了一份出来 而直接用的 = 赋值号 仅仅不过是贴上了一个标签而已

在这里插入图片描述



14 元组 (不能改的) tuple

列表的元素可以 任意修改 插入 删除

元组 的元素不行

创建一个访问一个列表

大部分用的是小括号

在这里插入图片描述

但是引用的话 还是用的 中括号

在这里插入图片描述

无法被修改 和赋值的元组

那元组的区别呢?? 特别体现它的

在这里插入图片描述

在这里插入图片描述

temp就没有带括号

在这里插入图片描述

注意的一点就是 小括号并不是 用来定义是否是元组的标志

而是 逗号 , 除非要创建一个空的元组 直接 temp = ()

在这里插入图片描述

加上逗号 就可以判别是否为元组了 甚至 temp = 1 , 也同样可以

在这里插入图片描述

就比较坑的地方

更新和删除一个元组

在这里插入图片描述

注意!! 逗号必须在’ 怡景’的后面! 否则报错

另外(:)用的是两个点!

del temp 会删除 实际上删除的是这个标签 一般python拥有自动的功能



15 字符串 各种奇葩的内置方法

在这里插入图片描述

拼接 只是换了一个标签 str1 还是之前那个不变 类似元组的元素添加



16 字符串的格式化(重重重重重重!)

在这里插入图片描述

其实最后打印出来的是按” ” 里面来的,format 更多是提供了一个对照放标

在这里插入图片描述

{0}的位置只能在前面 不能往后面放 因为它会默认 已经引领了一次默认的参数了

在这里插入图片描述

为什么会造成这样的现象呢?? 因为其中的参数0已经被解释掉了 用 {0} 作为前文中的 0

在这里插入图片描述

f 为定点数 注意到 {0:.f} 这个格式

在这里插入图片描述

在这里插入图片描述

多个参数尽量用元组来实现 , 同时%c 前后的空格 也被打印出来了

在这里插入图片描述

实际上就是
在这里插入图片描述
通过% 替代到 %s 里面去 合成一句

和C语言不同的是 C语言使用 “”和,来隔开 从而实现格式化的 但是python 两边甚至都不用加括号 只需要一个% 就可以了

在这里插入图片描述

转换进制

在这里插入图片描述

16 序列 序列 序列 (元组 列表 字符串 的总称)

在这里插入图片描述

在这里插入图片描述

max() min() 是返回参数 和序列中 最大 最小

在这里插入图片描述

要同类型 才可以比较大小



sum函数的两个 返回值用法

在这里插入图片描述

搞清楚 他俩和 列表内置函数的区别 ,在于他们的 -ed sorted(members) 和 members.sort()

在这里插入图片描述


reversed 返回的是一个对象


在这里插入图片描述

在这里插入图片描述

enumerate也是返回的一个对象 枚举类型 逗号之前那个数字更像是一个在里面的排列

在这里插入图片描述

Zip() 成对的打包成 元组



18 python的乐高积木

在这里插入图片描述

用def ***(): 来创建一个函数 定义他

在这里插入图片描述

一定要有 小括号 加 : 冒号

在这里插入图片描述

引用该函数的时候 直接输入 ***() 就好了 属于引用 然后 程序往 上面找函数 然后执行

在这里插入图片描述

使参数个性化的方法 name 这个参数就开始变得可变 可以写入 小鱿鱼也行…

在这里插入图片描述

函数的参数 都可以直接来决定 用逗号分隔开来 但是一般 3-4个就差不多了

函数的意思 要写好相应的 注释

但是函数究竟有没有达到效果 或者运行呢 可以调用 return()函数来做一个返回值

在这里插入图片描述

直接像 num1 + num2 就作为了return的返回值啦



P19 函数的强大

在这里插入图片描述

形参其实就是变量 它可以变 形参就是常数 虽然可以变 但是对于每次传值而言 就是固定的值

在这里插入图片描述

myfirstfunction.

doc

是用来调用函数中的文本 doc不就是文本的意思吗
在这里插入图片描述

在这里插入图片描述

就算是错了顺序,可以在里面进行定义,那么在参数多的时候 就会减去很多麻烦

在这里插入图片描述

这里 name= ,words = 属于默认参数。在函数定义的时候给形参赋初值

但是再调用函数的时候一样可以 给实参 来代替默认数值

收集参数!

在这里插入图片描述

*params 注意print()里面的 逗号分隔 格式 *params有一点把元组当做形参的格式感觉,

在传输值的过程里 它有点类似

在这里插入图片描述

收集参数 加上其他参数。 那么其他参数可以设置为默认参数



p20 函数

函数返回值的问题:函数 如果没有带参数 其实也会找到一个返回值,返回 none

在这里插入图片描述

元组 用逗号隔开也可以 实际是元组把多个值 打包返回

在这里插入图片描述

全局变量 和 函数内的 局部变量 old_price都不是一个相同的值



P21 内嵌函数和闭包

glabol关键字

在这里插入图片描述

shadowing屏蔽 了全局变量 和局部变量 的冲突性

在这里插入图片描述

glabol函数 可以把conut 的局部变量 屏蔽给跳过 意思就是 函数里一样调用了 是全局变量 conut 而不是从新创建了一个局部变量count
在这里插入图片描述

函数可以 嵌套调用 同时 调用fun2只能通过 fun1的 内嵌调用 而不能直接调用 必须通过 fun1

在这里插入图片描述

编程样式 针对对象 针对过程
在这里插入图片描述

这样就构成了闭包 注意 调用闭包函数的时候 相关的特点 i=funx(8)仍然是一个函数 i(5)才是函数最后算出来的一个值

还可以借用 二维数组的方式来加以理解

在这里插入图片描述

看好 很明显return 到 fun2() 就又会把fun2的函数 执行一遍 这会报错的 原因是数字全部存储在 栈里边的

(具体的解释 再去了解)

在这里插入图片描述

利用列表 就能排除去 数字在栈里边了

在这里插入图片描述

或者就是 nonlocal 来把X 强制 声明为不是一个局部变量就可以了 因为 返回的fun2()它是一个函数得嘛



p22 lambda 表达式

在这里插入图片描述

lambda函数得意思就是说 在冒号的前面 X 就是 函数的参数 在冒号的后面就是函数的返回值

在这里插入图片描述

在这里插入图片描述

lambda函数 多个参数的时候
在这里插入图片描述

在这里插入图片描述

过滤器 牛逼的BIF函数之一 我们通过眼睛审视一些文章

通过过滤器 我们可以 看到自己 觉得需要关注的 需要重点关心的

在这里插入图片描述

filter前面一个参数的条件内容是 None的条件意思 filter也是返回的一个对象 要用list打开

返回的是一个对象的时候 我们可以用list函数给它解开
在这里插入图片描述

简化一下 牛逼了的 仔细阅读 lambda x: x %2 是做为filtter函数的 第一个参数条件, range是第二个参数条件

map()函数

在这里插入图片描述

分别把列表里面的数值 按照一定的条件算法 分别迭代进入计算 分别返回相应的数值



P23 递归的厉害

Ctrl+C 强制停止
在这里插入图片描述

在这里插入图片描述

设置递归的层数 python 是1000层 从而启用保护机制

Fibonacci() 斐波那契数列的函数实现

在这里插入图片描述

两两 相邻相加 就等于下一个

在这里插入图片描述

在这里插入图片描述

while 以下的逻辑算法 (迭代思想) 牛逼阿!

在这里插入图片描述

n为需要迭代到 多少次的时候
在这里插入图片描述

递归的逻辑思想

在这里插入图片描述

语法错误 又在函数中调用了一模一样的自己

看看正确的思想
在这里插入图片描述

!!!!!!!!!!!但是有时候用递归的话 会加长计算的长度, 反而有时候用迭代非常好用呢



P24 递归:汉诺塔

在这里插入图片描述

这里的 n == 1 是指x 针 上只有一个的时候 直接移到目的地 z针上面去 (逻辑意思就是把最下面那个移动到Z针 在上面的所有都移动 到Y针的基础上)

在这里插入图片描述

超简单的逻辑实现(属于废话的那种了)

在这里插入图片描述



p26 当索引不好用的时候

在这里插入图片描述

此处的 brand.index(‘鱼c工作室’)的返回值 其实是 数字3 而slogan [brand.index(‘鱼c工作室’)] 实际上的意思就是slogan[3]

列表的映射


字典 的特性 用大括号{}

属于映射类型 不属于 序列(列表 元组 字符串)
在这里插入图片描述

李宁 就是属于 键(key) ‘一切皆有可能’属于 值(value)

在这里插入图片描述



要注意到 字典的 引用格式 dict1[]

中括号里面可以用 整形变量 也可以用 字符串 都可以

在这里插入图片描述

在这里插入图片描述

用关键字dict() 创建的时候 不可以用 ’ ’ 也就是 字符串作为 key 这就好比变量的规定

而且会自动按照首字母来排序

在这里插入图片描述

替换 苍井空这个键的值

在这里插入图片描述

dict4[’ ‘] 这种方法 会先找到是否 字典内部 有这样一个键 有的话就替换它的值 如果没有的话就重新建一个 键 key

在这里插入图片描述

在这里插入图片描述

把分别几个不同的字典的 键 通过内置函数

.fromkeys

的方法来实现, 注意其中的各个区别

第二个参数 为一坨的时候 并不会分别对应赋值 而是整体都被赋值了

在这里插入图片描述

并不会发生改变 就是更换值 而是类似于从新建立了一个

在这里插入图片描述

32个赞

在这里插入图片描述

dict.keys 就是指在 键里面跑

在这里插入图片描述

dict.value 只在值里面跑

在这里插入图片描述

在全部里面跑 (包括键与值)
在这里插入图片描述

用print的方法来访问 字典的项 越界了就会报错因为要面对对象 所以应该找到更好的一个方法

在这里插入图片描述

用 字典的内置函数

.get

可以 更从容的打印 字典的项 而不会出现报错 返回值None 就是什么也不打印

在这里插入图片描述

设置比较灵活可以进行添加一些的参数
在这里插入图片描述

用in 来进行判断 有无

在这里插入图片描述

用内置的

.clear

来清空该字典 也可以用 a= {}来定义空的字典 但是并不严谨

在这里插入图片描述

用a= {}来定义会造成以上的问题 就是b 并没有随着a的改变而改变 他仍然 可以访问到原始的那个数据

在这里插入图片描述

但是用clear的话 就会 让b跟着a的清空 一起被清空

在这里插入图片描述

用内置函数

.copy前拷贝

拷贝下来的内容虽然一样 但是地址并不是一样的 用赋值进行的拷贝实际上是相同的

在这里插入图片描述

前拷贝的b并不会被影响到

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里的

a.popitem

是属于 随机弹出来一个


setdefault

的内置函数 类似于

get

只是唯一的区别就是 get 没找到返回None 不会表现出来 但是setdefault 找不到会自动去添加

在这里插入图片描述

在这里插入图片描述

它有它内部的一个随机排序方式


.update

在这里插入图片描述

update 使用一个字典 映射另一个字典



P28 集合 (字典近亲)

在这里插入图片描述


如果在花括号{}里面 如果没有映射的关系的话 那就是说它是集合


在这里插入图片描述

集合会把重复的元素给重叠了 因为元素在集合中是唯一的

同时不能对集合里面的原色进行检索 用下标的方式

集合是无序的


在这里插入图片描述


会发生报错


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

会发生报错

了解set的使用方法

在这里插入图片描述

在这里插入图片描述

没学过集合就可以采取这样的方法来实现 把不是空格的元素添加进 空列表temp中

在这里插入图片描述

list把num1返回成了一个 列表

在这里插入图片描述


set1 成了一个集合了 看符号


在这里插入图片描述

在这里插入图片描述

集合中的一些

内置函数 add remove

其中的参数是要 增加 或者删除的 元素

在这里插入图片描述


frozenset()函数 用来定义一个元素无法被修改 冻结了的集合


在这里插入图片描述

就无法添加了 会报错



P29 文件 哇喔~

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一般都是默认的参数

在这里插入图片描述

w 若是文件不存在会创建一个 存在 依然会创建一个来覆盖之前所有的 不会追加

在这里插入图片描述

a 与w 不同会进行追加 ,就是上次没写完的文件 可以接着写入

在这里插入图片描述

在这里插入图片描述

比如E盘下的 文本文件 record
在这里插入图片描述

在这里插入图片描述

可以被赋值给一个变量 文件被赋值 再对变量f 采取一系列操作

在这里插入图片描述


read()内置函数 如果参数(size)是-1 或者不写 就是读取全部 字符 他读取的参数是按照字符来的


在这里插入图片描述
前五个字符

在这里插入图片描述

tell() 是读取文件内 指针的所指位置 (PS:一个中文字符占两个字节)

在这里插入图片描述

.seek()函数的用法
在这里插入图片描述

从0开始 便宜45个字节指针 刚刚到小甲鱼的‘小’字 其中的\n 也被一起算作两个读入

然后用readline读出一行,读到\n之前就可以了

在这里插入图片描述

用列表函数list()把这个文本输出成了列表

在这里插入图片描述


思考: 为什么 读出的是一行一行的 而不是 一个一个字符? 奥!因为有\n的符号!


在这里插入图片描述

其实不用那么多繁复的操作 因为如果文本过大 转换成列表 需要时间 再来读取列表 也需要时间

完全可以直接就读取了文本文件

在这里插入图片描述

就是说 f 不是一个可以写入的状态 因为之前open()的默认参数是r 只读不写的

在这里插入图片描述

因为本来E盘是没有 test 这个文本文件的 那么w 就会自动创建一个新的可以写入的test.txt

在这里插入图片描述

返回值是 写入的字符数量

在这里插入图片描述

关闭了 之后就开始写入了 如果没关闭就会写入缓冲区里面 (有点类似保存的感觉!)



P30 文件(一个任务)

在这里插入图片描述

在这里插入图片描述

先打开文件

在这里插入图片描述

如果碰到=

那就把文件分别保存了(保存三个文件)

如果没有

=那就把每一行的读出

按照要求 给每一行放置到对应的 列表里

在这里插入图片描述

分隔我们用字符串的一个内置函数

在这里插入图片描述

返回的是一个列表挨~ 哈哈


以:冒号作为关键字 左切和右切


在这里插入图片描述

(role,line_spoken) 直接以冒号为分隔点 把冒号前的字符分给了 role 冒号后面的字符分给了line_spoken

参数1的意思

是冒号后
在这里插入图片描述

第二个

参数1 or 3

如果发现作为分隔符的不够3个 一样和1相同 返回值。除非有3个 返回值才是分成三份

再利用对 role的字符识别 来把冒号后面的分隔内容放置到分别不同的列表中

注意此处

在这里插入图片描述

作为全局变量 用来改变boy_1 boy_2的字

在这里插入图片描述

碰到=

用来分文件了 字符串的拼接 需要把

整形count给强制转换成str字符


在这里插入图片描述

分别打开各个文件的写入状态

在这里插入图片描述

刚好可以用 .

writelines()来写入 列表(属于序列)


在这里插入图片描述

boy 和girl 都是作为一个 队列的 存的是一行一行的字符串

在这里插入图片描述

再分别进行 初始化 再把count 计数加一

在这里插入图片描述

不能忘记关闭相关文件, 否则 数据一直都在缓冲区里面 无法保存到文件中


关闭文件很重要!!!!


在这里插入图片描述

最后关闭之前的record只读 文件

在这里插入图片描述

为什么 值保存了两个文件呢???

因为程序是根据 ==== 来判断的

但是 三大段话只用了两排 =

来分隔

第三个并没有 === 所以 要加工第三行

**解决方法1:

在第三大行下面添加一段



解决方法2:

把内部循环代码 (创建新的文件 并且把内容写入的那部份代码)

count不用管 因为它的变化从1开始 上一个循环就是为这个文件命名准备的, 列表数据的写入同理**



程序优化



在这里插入图片描述

利用函数打包 重复代码的思想 把重复率高的代码 打包封装起来

在这里插入图片描述

函数有三个形参 是代表有三个 实参会传来(也就是三个数据在变化的,切函数里有涉及到的三处变化)

在这里插入图片描述

又把整个所有的 代码给封装成了一个函数 返回值是 开始打开的那个文件record.txt


自己写的


在这里插入图片描述

在这里插入图片描述

此处格式错误 应该直接是open(boy_file_name,‘w’)



P31 一个高大上的东西。。模块

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import os 引入os模块 然后对os 模块的一系列操作

在这里插入图片描述

在这里插入图片描述

返回当前工作位置
修改位置到E盘

列举该目录中的各个文件名

在这里插入图片描述

反斜杠在单引号内 创建新目录,如果上一层目录不存在,则引用失败

在这里插入图片描述

因为 B目录里有个 文件 test 除非先删除了这一 个的test的文件才能够删除该子目录


换言之 remove只能删除单层的目录


在这里插入图片描述

在这里插入图片描述

第一个是命令台 第二个计算器
**以上**

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

他仍会把最后一个字符当做文件名

在这里插入图片描述

只搞后缀

在这里插入图片描述



P32 永久保存 pickle 泡菜 pickling把对象转换成二进制 二进制转化成对象的过程 unpickling

在这里插入图片描述

‘wb’的意思是打印进去二进制的 最后也是把 my list中的一些文件转换成二进制给转入进去

在这里插入图片描述

‘rb’的意思 二进制的形式 读出来

这里面看起来就感觉跟冗长 繁复

但是当我们面对到更加长的队列的时候

代码就变得 优雅了

在这里插入图片描述

腌制

在这里插入图片描述

导入先前腌制

P32 你不可能总是对的 Exception
在这里插入图片描述

在这里插入图片描述

报错了 在普通用户的眼里 就没有什么后缀的这个类似的说法

我们输入 正确的是 要加上一个 后缀跟着文件名

在这里插入图片描述

判断是否为失败 错误



P33 异常处理

在这里插入图片描述

在这里插入图片描述

检查是否出错 , 用户体验会好很多,但是最终对于我们 就太笼统

因为 我问什么是一个文件 并不存在

在这里插入图片描述

reason它只是作为一个 变量来存储 错误的内容

在这里插入图片描述

错误 是没有该文件 这种方法就是可以定位

在这里插入图片描述

1 + ‘1’ 是不行的 两个类型是不可以相加的

在这里插入图片描述

int(‘abc’) 属于ValueError

在这里插入图片描述

只要异常就输出 但是并不推荐该用法 因为不可以准确输出 具体的错误类型

在这里插入图片描述

无论是哪一个错误 都会被捕捉到
在这里插入图片描述

finally 后面的代码是无论如何都会被执行

在遇到错误代码之前
在这里插入图片描述

如果把 f.close()的语句放在了 sum…的后面 就会因为 该错误语句而不能执行到前面的写入的数据 尽管会返回 输入的个数 5 但是并不会写入 五个数据 因为 在关闭文件 的过程之前就 出错了 就不能执行到关闭 文件的操作

在这里插入图片描述

解释内容

在这里插入图片描述

在这里插入图片描述

P35 图形用户界面入门:EasyGui

在这里插入图片描述

在这里插入图片描述
GUI编程


下载的过程


在这里插入图片描述

在这里插入图片描述



对象

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调用 对象的功能

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

pass就是 过

Mylist 就继承了 list的这个类

在这里插入图片描述

在这里插入图片描述

尽管都是在调用 fun()但是 结果都是不一样的


关于self

默认的参数

在这里插入图片描述


魔术方法


在这里插入图片描述

在这里插入图片描述




init

(self) 非常重要的方法!


构造方法 对象 成为实例的时候自动调用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意区别 _init_并不需要单独作为内置方法来传值了 而是直接可以用 对象来传值 方便很多 同时 参数排开self 直接传到后面的两个参数上去

在这里插入图片描述

有公有 私有的区别 默认的话 对象的属性方法都是 公有的

在这里插入图片描述

双__可以 私有化 理论上 外部就不能访问它了

在这里插入图片描述

可以通过内置函数返回值 调用那一个函数来 调用它

在这里插入图片描述

python实际上是把 __name改成了 _类(对象)__name的形式了 也就是 __name==_Person__name

所以其实都是伪私有的


继承

在这里插入图片描述

在这里插入图片描述

继承者 我们称作为子类 子类可以继承所有父类的 属性和方法

在这里插入图片描述

决定他是子类还是父类 是看这个括号里面的

在这里插入图片描述

当子类 和父类的 内部函数方法冲突的时候 优先调用子类

在这里插入图片描述

为什么shark.move() 会发生报错呢 因为子类的方法覆盖了父类的方法 调用子类的时候 优先运行子类的方法

但是呢 有需要 shark.move()可以按照本身想要的随机位置移动 需要用到的继承方法

在这里插入图片描述

在这里插入图片描述
只需要在 下面重新的输入一行这样的代码

在这里插入图片描述
有种在 调用子类覆盖方法之前 调用父类方法的感觉诶

在这里插入图片描述

Base1 Base2 都是相应的父类

在这里插入图片描述

当不确定必须要使用多重继承的时候 尽量不要去使用 因为这很容易造成代码的混乱


拾遗


在这里插入图片描述

对于水池的编辑

在这里插入图片描述

self.turtle 相当于就像是一个对象

在这里插入图片描述

为什么c.count = 10呢?

因为生产了一个c.count 的实例对象 来覆盖了一个C.count 的类对象

在这里插入图片描述

在这里插入图片描述

发生冲突

为避免冲突 应该不要老想着在一个类里面 把所有的方法都陈列出来

而是通过组合 继承机制来 扩展他的类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实际上此处的 bb.printBB() == bb.printBB(bb)

在这里插入图片描述

实例化对象为dd 类对象为CC

在这里插入图片描述

dd返回属性 为一个 字典
在这里插入图片描述

self 的绑定

在这里插入图片描述



版权声明:本文为after_996原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。