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

方法重写

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

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

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、错。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下安装docker

一、docker安装说明 解决官方源无法下载的问题 二、使用步骤 1.更新软件包索引 sudo apt-get update2.安装必要的软件包,以允许apt通过HTTPS使用仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common3.添加Docker的…

数据结构:冒泡排序,选择排序,插入排序,希尔排序的实现分析

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 小新的主页:编程版小新-CSDN博客 1.冒泡排序 1.1算法思想 冒泡排序的基本思想就是&a…

LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?环境安装及其配置(上篇)

引言 下载待部署模型 安装minconda 安装tvm和mlc-llm 安装 JDK 安装 Android SDK 下载mlc-llm仓库 设置环境变量 安装Rust 1. 引言 梨花风起正清明,游子寻春半出城。 小伙伴们好,我是公众号《小窗幽记机器学习》的小编:卖青团的小…

38. 外观数列

题目 「外观数列」是一个数位字符串序列,由递归公式定义: countAndSay(1) "1" countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。 行程长度编码(RLE)是一种字符串压缩方法,其工作原理是通过将连续相…

刷代码随想录有感(114):动态规划——最少数量的零钱换整

题干&#xff1a; 代码&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int amount) {vector<int>dp(amount 1, INT_MAX);dp[0] 0;for(int i 0; i < coins.size(); i){for(int j coins[i]; j < amount; j){if(dp[j - coi…

【Linux】系统文件IO·文件描述符fd

前言 C语言文件接口 C 语言读写文件 1.C语言写入文件 2.C语言读取文件 stdin/stdout/stderr 系统文件IO 文件描述符fd&#xff1a; 文件描述符分配规则&#xff1a; 文件描述符fd&#xff1a; 前言 我们早在C语言中学习关于如何用代码来管理文件&#xff0c;比如文件的…

对于C++ 程序员来说,35岁魔咒是否存在?

大家常说程序员职业生涯会在35岁左右遇到所谓的“35岁魔咒”。这意味着在这个年龄段&#xff0c;程序员可能会面临就业不稳定或职业发展的挑战。对于C程序员来说&#xff0c;这个问题更加引人关注。 随着时间的推移&#xff0c;技术行业不断演进&#xff0c;新的编程语言层出不…

编程精粹—— Microsoft 编写优质无错 C 程序秘诀 01:假想的编译器

这是一本老书&#xff0c;作者 Steve Maguire 在微软工作期间写了这本书&#xff0c;英文版于 1993 年发布。2013 年推出了 20 周年纪念第二版。我们看到的标题是中译版名字&#xff0c;英文版的名字是《Writing Clean Code ─── Microsoft’s Techniques for Developing》&a…

34、shell数组+正则表达式命令

0、课前补充 jiafa () { result$(echo " $1 $2 " | bc ) print "%.2f\n" "$result" } ##保留小数点两位 薄弱加强点 a$(df -h | awk NR>1 {print $5} | tr -d %) echo "$a"一、数组 1.1、定义 数组的定义&am…

Native开发工具之应用开发编辑器打包发布(一)

Nuclide 是基于 Atom 之上构建的单独的一个包&#xff0c;其提供可编程性且社区非常活跃。它为 React Native、Hack 和 Flow 项目提供一流的开发环境。 2. Atom 官网&#xff1a;https://atom.io/ Github 项目地址&#xff1a;atom(https://github.com/atom) 文档&#xff1…

SpringBoot-注解@PropertiySource读取外部属性文件

ConfigurationProperties和Value两个注解能从配置文件中获取数据&#xff0c;但是前面讲了他们是从全局配置文件中获取&#xff0c;且只能从全局配置文件中获取&#xff0c;那么如果是一些数值类的数据放在全局配置文件里&#xff0c;是不怎么合适的&#xff0c;我们往往会把他…

gitlab 获取指定分支下指定路径文件夹的解决方案

第一步&#xff1a; 获取 accessToken 及你的 项目 id &#xff1a; 获取 accessToken ,点击用户头像进入setting 按图示操作&#xff0c;第 3 步 填写你发起请求的域名。 获取项目 id , 简单粗暴方案 进入 你项目仓库页面后 直接 源码搜索 project_id&#xff0c; value 就…

QT自定义标题栏窗口其一:实现拖动及可拉伸效果

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<

Android intent 打开链接跳转到外部浏览

前言: 各位同学大家好, 最近接到一个比较诡异的需求 ,不是通常的webview 加URL显示网页 是需要跳转到外部浏览器 ,我这边处理好了就分享给大家 效果图 : 点几就跳转到外部浏览器 如图 具体代码实现: 点击打开链接并跳转外部浏览器方法 public void openBrowser(Con…

算法刷题总结

1. 排序算法 1.1 快速排序算法 public abstract class Sort<T extends Comparable<T>> {public abstract void sort(T[] array);protected boolean less(T first, T two) {return first.compareTo(two) < 0;}protected void swap(T[] array, int i, int j) {T…

《人生苦短,我用python·四》pybind11多场景使用

引言 Pybind11作为一个强大的工具&#xff0c;不仅可以轻松地将简单的C函数和类暴露给Python&#xff0c;还可以处理更复杂的场景&#xff0c;比如支持C标准库容器、处理C异常、以及自定义数据结构的转换。本文将深入介绍Pybind11的一些高级用法&#xff0c;帮助你在实际项目中…

修复 pprof ---node_exproter访问漏洞(go-pprof-leak)

前言&#xff1a; ** 在Go语言中&#xff0c;pprof和debug包是用来检测和避免goroutine泄漏&#xff0c;避免导致goroutine泄漏&#xff0c;进而消耗大量系统资源。不过对于安全而言确又存在一定风险&#xff0c;** 风险&#xff1a; 通过node_exporter web发现 190.168.46.1…

Unity Meta Quest 开发:关闭 MR 应用的安全边界

社区链接&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 &#x1f4d5;教程说明 这期教程我将介绍如何在应用中关闭 Quest 系统的安全边界。 视频讲解&#xff1a; https://www.bilibili.com/video/BV1Gm42157Zi 在 Unity…

DVWA 靶场 Weak Session IDs 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

VirtualBox虚拟机声音设置

最近发现VirtualBox创建的Windows 10和11虚拟机没有声音&#xff0c;但是另外一个Windows 7的虚拟机确有声音&#xff0c;检查对比了一下虚拟机的声音设置&#xff0c;发现是Host Audio Driver的设置不一样&#xff0c;Windows10和11的是Default&#xff0c;而Windows7的是Puls…