当前位置: 首页 > backend >正文

Pycharm(十六)面向对象进阶

一、继承

概述:

        实际开发中,我们发现很多类中的步分内容是相似的,或者相同的,每次写很麻烦,针对这种情况, 我们可以把这些相似(相同的)部分抽取出来,单独地放到1个类中(父类), 然后让多个类(子类)和这个类产生关系,这个关系就叫:继承。

通俗解释:

        子承父业,Python中的继承,子类=>继承父类的 属性,行为。

格式:

         class 子类名(父类名):

                 pass

优点:

         1.提高代码的复用性; 2.提高代码的可维护性。

缺点:

         耦合性增强了,好坏都继承了过来。

         耦合:指的是类与类之间的关系

        细节:

         1.所有的类都直接或间接继承自object,它是所有类的父类,也叫:顶级类

       

'''
继承相关概述:概述:实际开发中,我们发现很多类中的步分内容是相似的,或者相同的,每次写很麻烦,针对这种情况,我们可以把这些相似(相同的)部分抽取出来,单独地放到1个类中(父类),然后让多个类(子类)和这个类产生关系,这个关系就叫:继承通俗解释:子承父业,Python中的继承,子类=>继承父类的 属性,行为格式:class 子类名(父类名):pass优点:1.提高代码的复用性;2.提高代码的可维护性。缺点:耦合性增强了,好坏都继承了过来耦合:指的是类与类之间的关系细节:1.所有的类都直接或间接继承自object,它是所有类的父类,也叫:顶级类
'''
class Father:def __init__(self):self.gender='男'def walk(self):print('饭后走一走,能活九十九!')
class Son(Father):pass
if __name__ == '__main__':s=Son()print(f'gender:{s.gender}')s.walk()print(type(s.walk))

运行结果:

二、多继承

1. Python中支持多继承写法, 即: 1个类可以有多个父类。

        写法为:   class 子类名(父类名1, 父类名2...)

2. 多继承关系中, 子类可以继承所有父类的属性和行为.   前提: 父类的私有成员除外.

3. 多继承关系中, 多个父类如果有重名属性或者方法时, 子类会优先使用第1个父类(即: 最前边的父类)的该成员.

4. 上述的继承关系, 我们可以通过 Python内置的 mro属性 或者 mro()方法来查看.  

  mro: Method Resolution Order, 即: 方法的解析顺序(调用顺序)

class Master(object):# 1.1 定义父类的 属性.def __init__(self):self.kongfu = '[古法煎饼果子配方]'self.name = 'Master'# 1.2 定义父类的 行为, 表示: 摊煎饼.def make_cake(self):print(f'使用 {self.kongfu} 制作煎饼果子')# 2. 创建1个师傅类, 充当父类.
class School(object):# 2.1 定义父类的 属性.def __init__(self):self.kongfu = '[黑马AI煎饼果子配方]'# 2.2 定义父类的 行为, 表示: 摊煎饼.def make_cake(self):print(f'使用 {self.kongfu} 制作煎饼果子')# 3. 定义徒弟类, 继承自师傅类.
class Prentice(School, Master):pass# 在main函数中测试
if __name__ == '__main__':# 4. 创建子类的对象p = Prentice()# 5. 尝试打印 p对象的 属性 和 行为print(f'从父类继承的属性: {p.kongfu}')p.make_cake()  # 从父类继承来的行为.print('-' * 21)# 6. 演示方法的解析顺序, 即: MRO, 看看方法优先会从哪些类中找.print(Prentice.__mro__)     # 输出: Prentice >  School > Master > object, 封装成: 元组print(Prentice.mro())       # 输出: Prentice >  School > Master > object, 封装成: 列表

运行结果:

三、重写

概述:

         子类出现和父类重名的属性, 方法时, 会覆盖父类中的成员, 这种写法就称之为: 重写, 也叫: 覆盖.

注意: 重写一般特指: 方法重写.

应用场景:

         当子类需要沿袭父类的功能, 而功能主体又有自己额外需求的时候, 就可以考虑使用方法重写了.

细节:

         1. 子类有和父类重名的属性和方法时, 优先使用 子类的成员. 就近原则.

http://www.xdnf.cn/news/1962.html

相关文章:

  • 深度解析 Java 泛型通配符 `<? super T>` 和 `<? extends T>`
  • 使用功能包组织C++节点的具体教程
  • 天能资管(SkyAi):精准投资匹配,定制资产配置新体验
  • 202531读书笔记|《天上大风:良宽俳句·短歌·汉诗400》——我别无他物款待君,除了山中冬日寂寥,陶然共一醉,不知是与非,一饱百情足,一酣万事休
  • AI重塑职场:人机协同时代的组织变革与管理创新
  • AWS Glue ETL设计与调度最佳实践
  • 【HTTP/2:信息高速公路的革命】
  • 6.Three.js 中的 OrthographicCamera 详解(含示例)
  • 微信小程序文章管理系统开发实现
  • 5种隐蔽的外挂获取执行时机方法介绍
  • Ubuntu 上手动安装 Go 环境并解决“可执行文件格式错误”
  • 反射、枚举以及lambda表达式
  • 某些网站不允许复制怎么办
  • 蓝桥杯 4. 卡片换位
  • txtai:全能AI框架
  • 龙虎榜——20250425
  • spreadsheet 之websheet
  • vue项目前后端分离设计
  • 从氛围到节奏:情绪化配乐网站指南
  • 【Harmony_Bug】forEach + asyncawait 的异步陷阱
  • assertEquals()
  • 基于AIGC的3D场景生成实战:从文本描述到虚拟世界构建
  • 脚本分享:快速作图对比wannier拟合能带python脚本
  • 产品动态|千眼狼sCMOS科学相机捕获单分子荧光信号
  • Java代理讲解
  • 常见网络安全攻击类型深度剖析(三):DDoS攻击——分类、攻击机制及企业级防御策略
  • AI编程:[体验]从 0 到 1 开发一个项目的初体验
  • 利用车联网中的 V2V 通信技术传播公平的紧急信息
  • 【深度强化学习 DRL 快速实践】异步优势演员评论员算法 (A3C)
  • PCIe具体解释分析