组合、封装、多态、抽象类、鸭子类型
目录
1|01. 组合
1|11. 什么是组合:
- 组合指的是一个对象中的属性为另一个对象(就是把一个对象1赋值给了另一个对象2的一个属性,对象2就可以通过对象2.属性名.对象2中的属性名 ,来获取对象2 中的属性)
- 继承是类与类之间的关系,而组合是对象与对象之间的关系
1|22. 组合有什么用
- 组合的目的和继承一样,都是为了减少代码的冗余
1|33. 如何实现组合
2|02. 封装
2|11. 什么是封装
- 封装指的是把一堆属性放在一个对象中
2|22. 封装有什么用
- 封装方便了数据的存取,封装后,可以使用
对象名.属性名 的方式获得属性值
2|33. 如何实现封装
- 在定义类后,实例化类产生一个对象,这个类和他继承的父类的内部的所有属性就会被封装在这个对象中。
3|03. 访问限制机制
3|11. 什么是访问限制机制
- 在类的内部,凡是以
__
开头的数据属性与方法属性,都会被python内部隐藏起来,让外部不能直接访问内部的__
开头的属性
3|22. 访问限制机制有什么用
- 通过使用
__
来定义的属性,可以隐藏起来,不被外部直接调用。 - 好处: 对重要数据获取的逻辑更加严谨,进而保证数据的安全
3|33. 如何访问以__开头的属性
-
在类的内部定义一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者
-
在类的外部使用,
_类名__属性名
直接访问这个以__
开头的属性
-
通过对属性名的前面加上
__
的方法,还可以实现,程序的按规定步骤运行。
4|04. property
4|11. 什么是property
- property是python内置的装饰器,主要是给类内部的方法使用。
4|22. property 有什么用
- 使用这个装饰器的方法,将类内部的一个
def 方法名()
变成了def方法
在进行调用该方法的时候,不用再方法名后面加上括号。就是让他看上去从动词变成了名词。
4|33. 如何使用property
5|05. 多态
5|11. 什么是多态
- 多态指的是同一种事物的多种形态
5|22. 多态的作用
- 父类: 定义一套统一的标准.
子类: 遵循父类统一的标准(不是必须遵循,抽象类是必须遵循父类的一套标准) - 统一子类内部的编写的规范, 为了让使用者更方便调用相同功能的方法
5|33. 如何实现
-
通过继承来实现
-
在python中,不会强制要求子类必须遵循父类的一套标准,所以出现了抽象类
6|06. 抽象类
6|11. 什么是抽象类
- abc模块 abstract_class
6|22. 有什么用
- 强制子类必须遵循父类的一套标准(子类中必须要有父类中被装饰的方法,可以改变这些方法的顺序,但是不能少,少了就会报错,也可有自己的新的方法)
6|33. 如何使用
-
- 导入 abc 模块
- 父类加上括号,括号内要加上一些东西
- 加上装饰器
-
7|07. 鸭子类型
- 鸭子类型就是不通过继承,一个类自动的遵循某种标准,这样的类就可以叫做鸭子类型。
1.什么是鸭子类型?
在不知道当前对象是何物的情况下,但是你长得像鸭子,那么你就是鸭子类型.
- 继承:
耦合性太高,程序的可扩展性差 - 鸭子类型:
耦合度低,程序的可扩展性强
8|08. 多态和多态性
- 多态和多态性是两种不同的概念
- 多态性依赖于:继承
- 多态性:定义统一的接口,(类似抽型类中的统一的方法名)
- 多态:同一种事物的多种形态,动物分为人类,猪类(在定义角度) 多态性:一种调用方式,不同的执行效果
__EOF__

本文作者:BigSun丶
本文链接:https://www.cnblogs.com/Mcoming/p/11654688.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Mcoming/p/11654688.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!