程序猿大战Python——面向对象——继承进阶

news2025/1/17 18:01:53

方法重写

==目标:==掌握方法的重写。

当父类的同名方法达不到子类的要求,则可以在子类中对方法进行重写。语法:

class 父类名(object):
    def 方法A(self):
        代码
        ...
class 子类名(父类名):
    def 方法A(self):
        代码
        ...

例如,一起来完成:

(1)徒弟非常认真学习,终于掌握了老师傅的技术;

(2)接着,自己潜心钻研出类独门配方的全新摊煎饼技术;

(3)使用方法重写对摊煎饼方法进行处理。

# 1.老师傅: 父类
class Master(object):
    def make_cake(self):
        print("使用古法配方摊煎饼果子...")
​
​
# 2.徒弟:子类  -父类方法达不到要求
class TuDi(Master):
    # 重写
    def make_cake(self):
        print("======潜心学习,专研了新的配方制作煎饼果子...")
​
​
# 3.调用使用
tudi = TuDi()
tudi.make_cake()
print(TuDi.mro())

==总结:==

(1)当子类中出现与父类中同名方法且参数内容保持一致时,称为();==A、方法重写==;B、方法重载;

(2)当子类重写了父类方法后,子类对象优先调用执行子类方法,可以通过【子类名.mro()】查看执行顺序。

调用父类方法

==目标:==掌握使用super()调用父类方法。

当子类要在父类同名方法的基础上,再新增功能且要求在子类中调用同名方法时,就可以使用super()。

super()语法:

super().方法名([参数1, 参数2, ...])

说明:

(1)super()表示父类;

(2).点表示的。

例如,一起来完成:

(1)徒弟在培训学校学习努力,不仅掌握了黑马摊煎饼配方、还创办了自己煎饼果子的品牌;[配方、品牌]

(2)配合着一起摊煎饼,做出了更加美味的煎饼果子;

(3)使用调用父类方法在__init__()和摊煎饼方法中处理。

# 1.定义父类 [属性、方法]
class School(object):
    def __init__(self, pei_fang):
        self.pei_fang = pei_fang

    def make_cake(self):
        print("父类,制作了美味的煎饼果子!!")

# 2.定义子类
class TuDi(School):
    # 属性: 配方、品牌
    def __init__(self,pei_fange,brand):
        # self.pei_fang = pei_fange   # 提升代码的复用性
        super().__init__(pei_fange)
        self.brand = brand

    def make_cake(self):
        # 调用父类的方法
        super().make_cake()
        print("===========子类制作煎饼果子!!")

# 3.创建对象、调用
tudi = TuDi("白马","莫哥")
tudi.make_cake()

==总结:==

(1)super()可以简单的理解为:父类;

(2)当要在子类中调用父类的同名方法时,使用语法:().同名方法()。==A、super()==;B、self();

多层继承

==目标:==了解什么是多层继承?

多层继承指的是:多级继承的关系,比如:子类继承父类C、继续继承父类B、继续继承父类A等。

为了区分单继承、多继承和多层继承,看下图:

例如,一起来完成:

(1)N年后,当初的徒弟也老了;

(2)因此,徒弟想要把"有自己品牌,也有黑马配方的煎饼果子"的所有技术传授给自己的小徒弟;

(3)请试着使用多层继承的方式完成案例。

# 1.A父类 学校
class School(object):
    def make_cake(self):
        print("----1-----黑马学校:父类")
​
# 2.B父类 徒弟
class TuDi(School):
    def make_cake(self):
        print("=====2======徒弟: 子、父类")
​
# 3.子类 徒孙
class TuSun(TuDi):
    pass

==总结:==

(1)简单地说,多层继承表示有多级父类;

(2)请问:Python同时支持单继承、多继承和多层继承,这句话对吗?==A、对==;B、错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生】Docker可视化工具Portainer使用详解

目录 一、前言 二、docker可视化管理概述​​​​​​​ 2.1 什么是docker可视化管理 2.1.1 Docker可视化管理常用功能 2.2 为什么需要docker可视化管理工具 2.3 docker可视化工具带来的好处 三、常用的docker容器可视化管理工具解决方案 3.1 Portainer 3.2 Rancher 3…

快速业务建模

一句话故事 培训学院进行新季度招生工作,出计划后教务处审批,教学秘书下发计划,班主任手机名单审核后完成计划 用户故事 角色 时间线 动作为动名词 业务建模 多次建模,模型是否能完成业务

【解决方案】智慧园区解决方案(配套源码)

智慧园区整体解决方案-综合运营管理系统 1. 园区现状与发展机遇 2. 智慧园区愿景 3. 智慧解决方案架构 4. 智慧园区各子系统介绍 5. 智慧园区建设意义 楼宇管理,物业管理,消防管理,巡检管理,门禁管理,停车管理等综合实…

VMWARE安装Centos8,并且使用ssh连接虚拟机

VMWARE安装Centos8,并且使用ssh连接虚拟机 安装VMWARE安装Centos 8SSH连接 安装VMWARE 参考这篇文章: https://blog.csdn.net/weixin_74195551/article/details/127288338 安装Centos 8 首先在aliyun镜像仓库下载: https://mirrors.aliyun.com/centos/8/isos/x86_64/ 我下载…

练手代码之使用Python实现合并PDF文件

如果你有合并PDF的需要,你会怎么办 我们无所不能的程序员会选择写一个Python代码来实现(谁会这么无聊?是我),如果真的有PDF操作需要,我推荐你使用PDF Expert这个软件哈~ 话不多说直接上代码: …

FuTalk设计周刊-Vol.030

🔥AI漫谈 热点捕手 1、ChatGPT王炸升级!更强版GPT-4上线,API定价打骨折,发布现场掌声没停过 ChatGPT,今天裂变成无数个GPT。OpenAI在首届开发者日上,正式公布自定义GPT。还将上线“GPT商店”,…

html做一个画热图的软件

完整示例 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>热图生成器</title><script src"https://cdn.plot.ly/plotly-latest.min.js"></script><style>body …

基于Java的学生成绩管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…

TDA4VH高速路线指南和接口设计概要

TDA4VH 高速链路设计指南阅读及考虑 0、说明 本人目前做相关域控制器相关内容&#xff0c;目前正在研究TDA4的开发&#xff0c;目前正在对高速电路的的相关设计进行考虑&#xff0c;下面对TI官方提供的高速电路的设计的开发文档进行学习和分享: 1、高速系统架构介绍及PCB阻抗…

【C语言】顺序表(下卷)

本文继续讲顺序表上卷未讲完的相关内容。&#xff08;简短的补充&#xff09; 在指定位置之前插入数据 test.c SeqList.c SeqList.h //在指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x);在指定位置删除数据 test.c SeqList.c SeqList.h //在指定位…

跨平台免费流程图(思维导图)制作工具 draw.io v24.6.3(可离线)

在当今快节奏的工作环境中&#xff0c;有效地传达复杂信息和工作流程至关重要。流程图和思维导图是两种强大的视觉工具&#xff0c;它们帮助我们清晰地表达想法&#xff0c;理解复杂的系统&#xff0c;并协作完成项目。可以帮助我们清晰地展示信息和逻辑关系。然而&#xff0c;…

无需破解,打开就是旗舰版!

在当今快节奏的工作环境里&#xff0c;有效的视觉沟通变得至关重要。流程图、思维导图、组织结构图等图表能够帮助我们以清晰、直观的方式传达复杂信息。而Wondershare Edraw Max正是这样一款强大的绘图工具&#xff0c;它能够帮助用户轻松创建各种专业图表。 软件链接&#x…

Spring Boot 快速入门2 ——SpringBoot运行原理分析

一、SpringBoot运行原理 父依赖 我们再查看 Spring Boot 项目中 pom.xml 可以看出&#xff0c;所有的 Spring Boot 项目 直接或间接的 依赖于一个 父项目 spring-boot-starter-parent &#xff0c;主要是管理项目的资源及其插件。 <parent><groupId>org.sprin…

Linux 时区设置函数 tzset()【man 3 tzset】

1. NAME&#xff08;名&#xff09; tzset, tzname, timezone, daylight - 初始化时间转换信息 2. SYNOPSIS&#xff08;概要&#xff09; #include <time.h>void tzset(void);extern char *tzname[2]; extern long timezone; extern int daylight;glibc的功能测试宏要…

Uniapp在屏幕尺寸低于960出现样式错乱(开箱即用)

我司项目突然要做平板兼容,我在调试的时候发现当屏幕尺寸低于960px发现样式但凡是以rpx单位的全部失效&#xff0c;如果是以px为单位那么影响就比较小&#xff0c;当时解决方案是写了不少媒体查询和把单位rpx改成px&#xff0c;后面查阅文档发现大错特错宽屏适配只需一行代码即…

2024.06.22 刷题日记

199. 二叉树的右视图 这道题目的思路就是层次遍历&#xff0c;然后每次处理每一层所有的元素&#xff0c;如果是第一个就收集到答案中&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {if (!root)return {};queue<TreeNode*> q…

Kubernetes Ingress 简介

前言 Ingress 是 Kubernetes 中的一种资源对象&#xff0c;用于管理从集群外部到内部服务的 HTTP 和 HTTPS 路由。它提供了灵活的路由功能、SSL/TLS 终止、负载均衡和虚拟主机支持。Ingress 需要一个 Ingress 控制器来实际处理路由&#xff0c;并且可以通过配置不同的控制器来…

这4个手机应用,让你的生活工作更加方便

MillimeterPro MillimeterPro是一款适用于iPhone或iPad的测量工具应用&#xff0c;用户可以通过触摸屏快速进行长度测量、分割物体、测量物体比例&#xff08;W/H&#xff09;和面积等操作。 这款应用程序是一个多功能的测量工具&#xff0c;它可以帮助您在手机或平板电脑的屏…

(经验)高考填报志愿,有哪些坑你需要避开?

高考年年考&#xff0c;填报志愿的却年年都是新手.....哪些关于高考填报志愿的坑&#xff0c;依旧还继续坑....是时候做些改变了。过来人写的几点避坑&#xff0c;希望给这届新人做参考。 1、不要什么热门就报什么&#xff0c;因为有些东西别人学得很快&#xff0c;而我慢的像蜗…

示例:WPF中使用IsAsync的方式绑定数据来优化用户体验

一、目的&#xff1a;开发过程中&#xff0c;有时需要绑定大量数据&#xff0c;比如弹出一个窗口&#xff0c;窗口中包含一个ListBox绑定了大量数据&#xff0c;这时会出现点击按钮后出现假死卡顿影响用户体验&#xff0c;这理通过用IsAsync的方式将窗口优先弹出来再加载数据 二…