Python知识分享第十六天
“”"
故事7:
小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有.
问: 既然不想让子类用, 为什么要加私有?
答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用.
大白话: ATM机为啥要设计那么繁琐, 直接搞个大箱子, 里边放钱, 存钱就直接放进去, 取钱就直接拿多少, 何必要锁的那么严实, 留个插卡口, 键盘输入密码.
不能直接拿 要按照银行定的规矩拿
“”"
class Prentice():def __init__(self):self.congfu = '[独创煎饼果子配方]'def __make_cake(self):print(f'运用{self.congfu} 制作煎饼果子')def my_make_cake_method(self):self.__make_cake()class TuSun(Prentice):passif __name__ == '__main__':t1 = TuSun()# t1.make_cake() #报错 方法私有后通过公共的访问方式调用 # t1.__make_cake() #报错t1.my_make_cake_method()
“”"
多态介绍:
概述:
多态是指通义事物在不同时刻(环境) 表现出的不用状态, 形态
Python: 同一个函数 接收不同的对象 达到不同的效果
实现条件:
1.要有继承关系
2, 要有方法重写
3.要有父类引用 指向 子类对象
好处:
提高代码扩展性 和 可维护性
还记开发中的应用:
父类充当函数的形参类型 这样可以接受任意的子类对象 实现 传入什么子类 就调用其对应的功能
“”"
# 定义动物类 充当父类
class Animal():def speak(self):print('动物会叫')# pass # 如果多个子类的实现都不同 则直接用pass修饰即可class Dog(Animal):def speak(self):print('狗会汪汪汪的叫')class Cat(Animal):def speak(self):print('猫会喵喵喵')class Phone:def speak(self):print('手机会模仿各种声音')def print_animal(an: Animal):an.speak()if __name__ == '__main__':a = Animal()d1 = Dog()c1 = Cat()p = Phone()print_animal(d1)print_animal(c1)print_animal(p)
# 直观的感受父类引用指向子类对象
an : Animal = Dog()
“”"
需求:
构建对象对战平台object_play(英雄机, 敌机)
1. 英雄一代战机(战斗力60)与敌军战机(战斗力70)对抗。英雄1代战机失败!
2. 卧薪尝胆,英雄二代战机(战斗力80)出场!,战胜敌军战机!
3. 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗
提示:
抽象战机类 HeroFighter AdvHeroFighter;敌机EnemyFighter;
构建对象战斗平台, 使用多态实现
“”"
class HeroFight():def power(self):return 60
class AdvHeroFight(HeroFight):def power(self):return 80
class EnemyFughter():def power(self):return 70def object_play(hero:HeroFight, enemy:EnemyFughter):if hero.power() >= enemy.power():print('凯旋')else:print('铩羽')if __name__ == '__main__':hero = HeroFight()hero2 = AdvHeroFight()enemy = EnemyFughter()object_play(hero, enemy)object_play(hero2, enemy)
“”"
抽象类解释:
概述:
有抽象方法的就叫抽象类 也叫接口
抽象方法: 没有方法体的方法 就叫抽象方法
格式:
class 类名:
def 函数名(self):
pass
作用:
抽象类一般充当父类使用 用于指定 行业规范
而具体的实现 是交由各个子类完成
需求:假设国家规定空调必须有 冷风热风左右摆风的功能 现在又格力 美的 两个厂商正产空调 请用所学 模拟此场景
“”"
# 创建抽象类 表示标准\
class AC:def cool_wind(self):passdef hot_wind(self):passdef swing_l_r(self):pass
class Gree(AC):def cool_wind(self):print('格力空调 制造冷风')def hot_wind(self):print('格力空调,制造热风')def swing_l_r(self):print('格力空调 左右摇摆')class Media(AC):def cool_wind(self):print('美的空调 制造冷风')def hot_wind(self):print('美的空调 制造冷风')def swing_l_r(self):print('美的空调 制造冷风')if __name__ == '__main__':g = Gree()m = Media()g.cool_wind()g.hot_wind()g.swing_l_r()m.cool_wind()m.hot_wind()m.swing_l_r()
(1)请写出单继承与多继承的语法格式?
“”"
# 单继承
class 类名(父类名):重写方法
# 多继承
class 类名(父类名1,父类名2 ...):重写方法
"""
# (2)什么是方法重写,为什么要方法重写?
"""
方法重写是 子类继承父类后 将继承父类的方法逻辑重新编写
重写后的方法子啊父类的功能主题上 具有子类独有的功能
""""""
(4)实操练习:
- 1.创建一个Animal(动物)基类,其中有一个run方法,输出`跑起来....`;
- 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run()方法还有eat()方法;
- 2.1run方法输出 `跑起来....`
- 2.2 eat 方法输出 `吃东西...`
"""# #创建父类
# class Animal(object):
# #父类方法
# def run(self):
# print('跑起来...')
#
# #创建子类 继承父类
# class Horse(Animal):
# #子类方法
# def eat(self):
# print('吃东西...')
#
#
# if __name__ == '__main__':
# h1 = Horse()
# h1.run()
# h1.eat()"""
(5)加强练习:
- 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出`跑起来....`
- 2。创建一个Horse(马)类继承于动物类,Horse类中重写run方法,增加打印输出"`迈着矫健的步伐跑起来!!`",同时实现eat方法, 输出 `吃东西...`
"""# #创建父类
# class Animal(object):
# #父类方法
# def run(self):
# print('跑起来...')
#
# #创建子类 继承父类
# class Horse(Animal):
# #重写run方法
# def run(self):
# print('`迈着矫健的步伐跑起来!!`')
# #子类方法
# def eat(self):
# print('吃东西...')
#
#
# if __name__ == '__main__':
# h1 = Horse()
# h1.run()
# h1.eat()"""
(6)综合训练:- 1.创建一个动物(Animal)的基类,其中有一个run方法, 输出`跑起来....`
- 2.创建一个Horse(马)类继承于动物类,Horse类中不仅有run方法还有eat方法- 2.1 run方法输出 `跑起来....`- 2.2 eat 方法输出 `吃东西...`
- 3.创建一个 SwiftHorse(千里马)类继承Horse类,初始化init方法name属性为千里马,同时针对吃东西,SwiftHorse类中重写eat方法,增加打印输出"`一天可以吃一担粮食...`"
"""#
# # 创建父类
# class Animal(object):
# # 父类方法
# def run(self):
# print('跑起来...')
#
#
# # 创建子类 继承父类
# class Horse(Animal):
# # 重写run方法
# def run(self):
# print('`迈着矫健的步伐跑起来!!`')
#
# # 子类方法
# def eat(self):
# print('吃东西...')
#
#
# class SwiftHorse(Horse):
# # init初始化
# def __init__(self):
# self.name = '千里马'
#
# # 重写eat方法
# def eat(self):
# print(f'{self.name}`一天可以吃一担粮食...`')
#
#
# if __name__ == '__main__':
# h1 = Horse()
# h1.run()
# h1.eat()
#
# h2 = SwiftHorse()
# print(h2.name)
# h2.eat()"""
(7)综合训练:定义一个`Person` 类,包含初始化 init 方法:实例属性: 名字, name年龄, age"""# 创建类
class Person():# 初始化计数器 countcount = 0# init初始化参数def __init__(self, name, age):self.name = nameself.age = agePerson.count += 1def __str__(self):return f'此人的姓名为: {self.name} 年龄为: {self.age}'def __del__(self):Person.count -= 1
# 1. 记录由该类创建的对象的个数,创建一个对象,计数+1,删除一个对象,计数-1;
# count变量记录对象数
# 2. 定义一个方法,可以打印当前对象的个数;def print_count():print(f'当前对象数: {Person.count}')# 3. 定义一个方法`show_info`, 输出以下信息
# 这是一个 Person 类,谢谢查看!def show_info():print(f'这是一个 Person 类,谢谢查看!')# 需要传对象# def show_info(self):# print(f'这是一个 {self.__class__.__name__} 类,谢谢查看!')# 4. 打印对象的时候,可以输出打印自己的名字和年龄
# 我的名字是 xxx, 年龄是 xxx
# 用 __str__ 魔法方法# 5. 定义一个方法 `study`, 输出以下信息
# 我叫 xxx, 我要好好学习def study(self):print(f'我叫 {self.name} ,我要好好学习')# 6. 操作步骤
# 1. 调用`show_info `方法;
# 2. 创建两个对象, 打印当前对象,并打印当前的对象个数;
# 3. 分别使用两个对象调用`study`方法;
# 4. 删除一个对象,打印输出当前的对象个数。
if __name__ == '__main__':Person.show_info()p1 = Person('菲菲', 17)p2 = Person('波比', 18)print(p1)print(p2)Person.print_count()p1.study()p2.study()# p.show_info()# p.print_count()p2.__del__()Person.print_count()
“”"
构建对象对战平台object_play
1 英雄一代战机(战斗力60)与敌军战机(战斗力70)对抗。英雄1代战机失败!
2 卧薪尝胆,英雄二代战机(战斗力80)出场!,战胜敌军战机!
3 对象对战平台object_play, 代码不发生变化的情况下, 完成多次战斗
“”"
#
# class HeroFly():
# def fight(self):
# return 60
#
# class HeroFlyPlus(HeroFly):
# def fight(self):
# return 80
#
# class JapanFly():
# def fight(self):
# return 70
#
# def object_play(hero : HeroFly, japan : JapanFly):
# if hero.fight() >= japan.fight():
# print('凯旋')
# else:
# print('铩羽')
#
# if __name__ == '__main__':
# h1 = HeroFly()
# h2 = HeroFlyPlus()
# j1 = JapanFly()
# object_play(h1, j1)
# object_play(h2, j1)
坚持分享 共同进步 如有错误 欢迎指出
相关文章:
Python知识分享第十六天
“”" 故事7: 小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有. 问: 既然不想让子类用, 为什么要加私有? 答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用. 大白话: ATM机为啥要设计那么繁琐, 直接…...
管家婆财贸ERP BR045.大类存货库存数量明细表
最低适用版本: C系列 23.8 插件简要功能说明: 库存数量明细表支持按存货展示数据更多细节描述见下方详细文档 插件操作视频: 进销存类定制插件--大类存货库存数量明细表 插件详细功能文档: 应用中心增加菜单【大类存货库存数…...
Pytorch-GPU版本离线安装
最近在复现一项深度学习的工作,发现自己的pytorch是装的cpu版的(好像当时是直接加清华源,默认是cpu版本)。从官网在线下载速度太慢,还时不时断开连接,我们可以配置conda的清华源去这个问题,但是考虑到是在用…...
k8s 1.28 二进制安装与部署
第一步 :配置Linux服务器 #借助梯子工具 192.168.196.100 1C8G kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubectl、haproxy、keepalived 192.168.196.101 1C8G kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubectl、…...
【C语言】扫雷游戏(一)
我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。 2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时…...
二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(1)
前言 二分法,这一看似简单却又充满哲理的算法,犹如一道精巧的数学之门,带领我们在问题的迷雾中找到清晰的道路。它的名字虽简单,却深藏着智慧的光辉。在科学的浩瀚星空中,二分法如一颗璀璨的星辰,指引着我们…...
# 01_Python基础到实战一飞冲天(三)--python面向对象(一)--简单类
01_Python基础到实战一飞冲天(三)–python面向对象(一)–简单类 一、面向对象-01-基本概念 1、面向对象(OOP) 面向对象编程 —— Object Oriented Programming 简写 OOP。 2、面向对象(OOP) 学习目标 了解 面向对象 基本概念…...
sentinel使用手册
1.引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>2.yaml spring:cloud:sentinel:transport:dashboard: localhost:8090 #sentinel控制台地址…...
搜索二维矩阵 II(java)
题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 代码思路: 用暴力算法: class Solution {public boolean searchMatrix(…...
Python语法基础(四)
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 高阶函数之map 高阶函数就是说,A函数作为B函数的参数,B函数就是高阶函数 map:映射 map(func,iterable) 这个是map的基本语法,…...
03_Django视图
三、Django模板 模板Templates 在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦(M:Model,V:View,T:Template),VT有着N:M的关系,一个V可以调用任意T…...
如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件
如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件 在使用 Hugging Face 的数据集进行模型训练时,有时我们并不需要整个数据集,尤其是当数据集非常大时。为了节省存储空间和提高训练效率,我们可以从数据集中随机采样一部分数…...
11 设计模式之代理模式(送资料案例)
一、什么是代理模式? 在现实生活中,我们常常遇到这样的场景:由于某些原因,我们可能无法亲自完成某个任务,便会委托他人代为执行。在设计模式中,代理模式 就是用来解决这种“委托”问题的࿰…...
MongoDB聚合操作
1.聚合操作 聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果。聚合操作包含三类:单一作用聚合、聚合管道、MapReduce。 单一作用聚合:提供了对常见聚合过程的简单访问,…...
第二十三周周报:High-fidelity Person-centric Subject-to-Image Synthesis
目录 摘要 Abstract TDM SDM SNF 测试时的人物细节捕捉 主要贡献 总结 摘要 本周阅读了一篇2024年CVPR的关于高保真度、以人物为中心的图像合成方法的论文:High-fidelity Person-centric Subject-to-Image Synthesis。该论文提出了一种名为Face-diffuser的…...
Cesium 与 Leaflet:地理信息可视化技术比较
在现代地理信息系统(GIS)和空间数据可视化领域,Cesium 和 Leaflet 是两种非常常见的地理可视化库,它们各自适用于不同的应用场景。Cesium 专注于三维地球视图和复杂空间分析,而 Leaflet 则注重轻量级的二维地图展示。本文将对这两种技术进行详细的对比,帮助开发者根据具体…...
Linux 服务器使用指南:诞生与演进以及版本(一)
一、引言 在当今信息技术的浪潮中,Linux 操作系统无疑是一个关键的支柱😎。无论是在服务器管理、软件开发还是大数据处理领域,Linux 都以其卓越的适应性和优势脱颖而出👍。然而,对于许多新手而言,Linux 系统…...
龙蜥 Linux 安装 JDK
龙蜥 Linux 安装 JDK 下载安装解压到目标路径设置环境变量直接在启动脚本中临时设置 参考资料 下载 这个就不赘述了,参考资料中的另外两篇安装帖,都有。 如果不能上网,也可以去内网其他之前装过JDK的服务器,直接复制过来。 tar …...
Python小白语法基础20(模块与包)
0) 参考文章 python的模块(module)、包(package)及pip_python package-CSDN博客Python之函数、模块、包库_python函数、模块和包-CSDN博客Python函数模块自定义封装及模块嵌套导入(手把手教程)_python如何封装一个模块-CSDN博客 1) 模块与包说明 软件…...
详解 Qt QtPDF之QPdfPageNavigator 页面跳转
文章目录 前言头文件: 自 Qt 6.4 起继承自: 属性backAvailable : const boolcurrentLocation : const QPointFcurrentPage : const intcurrentZoom : const qrealforwardAvailable : const bool 公共函数QPdfPageNavigator(QObject *parent)virtual ~QPd…...
通俗易懂:序列标注与命名实体识别(NER)概述及标注方法解析
目录 一、序列标注(Sequence Tagging)二、命名实体识别(Named Entity Recognition,NER)**命名实体识别的作用****命名实体识别的常见实体类别** : 三、标签类型四、序列标注的三种常见方法1. **BIO…...
【C语言】二叉树(BinaryTree)的创建、3种递归遍历、3种非递归遍历、结点度的实现
代码主要实现了以下功能: 二叉树相关数据结构定义 定义了二叉树节点结构体 BiTNode,包含节点数据值(字符类型)以及指向左右子树的指针。 定义了顺序栈结构体 SqStack,用于存储二叉树节点指针,实现非递归遍历…...
2024年11月文章一览
2024年11月编程人总共更新了21篇文章: 1.2024年10月文章一览 2.《使用Gin框架构建分布式应用》阅读笔记:p307-p392 3.《使用Gin框架构建分布式应用》阅读笔记:p393-p437 4.《使用Gin框架构建分布式应用》读后感 5.《Django 5 By Example…...
重生之我在异世界学编程之C语言:二维数组篇
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一 二维数组的创建1. 二维数组的…...
和鲸科技创始人CEO范向伟出席首届工业智算产业发展研讨会,共话 AI 创新与产业化落地
11 月 22 日,首届工业智算产业发展研讨会在中国工业互联网研究院召开。工业和信息化部党组成员、副部长单忠德,国家信息中心大数据发展部副主任魏颖出席会议并致辞。中国工程院院士、北京化工大学教授高金吉,工业和信息化部信息通信发展司二级…...
postgres数据备份与主从配置
备份PostgreSQL数据库 备份格式有几种选择: bak:压缩二进制格式 sql:明文转储 tar: tarball mydb# \q -bash-4.2$ pg pgawk pg_dump pgrep pg_basebackup pg_dumpall pg_restore# 备份所有的 -bash-4.2$ pg_dumpall &…...
【二分查找】力扣 275. H 指数 II
一、题目 二、思路 h 指数是高引用引用次数,而 citations 数组中存储的就是不同论文被引用的次数,并且是按照升序排列的。也就是说 h 指数将整个 citations 数组分成了两部分,左半部分是不够引用 h 次 的论文,右半部分论文的引用…...
使用uni-app进行开发前准备
使用uni-app进行开发,需要遵循一定的步骤和流程。以下是一个详细的指南,帮助你开始使用uni-app进行开发: 一、开发环境搭建 安装Node.js: 首先,从Node.js的官方网站(https://nodejs.org/)下载并…...
AI开发-深度学习框架-PyTorch-torchnlp
1 需求 Welcome to Pytorch-NLP’s documentation! — PyTorch-NLP 0.5.0 documentation 2 接口 3 示例 4 参考资料...
VBA数据库解决方案第十七讲:Recordset对象记录位置的定位方法
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...
网站开发需求/什么是seo标题优化
[彻底解决 configparser 中文乱码问题,让你的 Python3 代码更加优雅] Python3 configparser 是一个非常重要的模块,它可以帮助我们读取和写入配置文件,很多项目都会用到这个模块。但是在使用过程中,我们可能会遇到中文乱码的问题,这给我们的编码工作带来了很大的困扰。 …...
云南专业网站建设/外贸网站制作推广
算是狗年上班的最后一天吧,想想还是略略总结一下近半年来的概况。 这段时间比较懒得去总结更新发表新的博客,一来是生活和工作的琐碎让自己有些懈怠,二是对自己写的东西缺乏深度感到困扰,自己大概也带着些完美型人格吧。最近的工…...
成都企业网站优化/建一个app平台的费用多少
在JAVA编程中,JAVA提供了8种基本数据类型,分别是int、byte、short、long、float、double、char、boolean,除此之外,其它的都是对象引用,如:数组和字符串。当定义基本数据类型变量时,其格式&…...
番禺建设网站外包/东莞百度搜索网站排名
2019独角兽企业重金招聘Python工程师标准>>> 腰椎间盘突出我是L45号,左腿发麻有时疼痛,腰开始只是酸痛,因为是在外地打工怕家里担心,有胆小,周末百度了下就去了医院。还好当时着的是三家公立医院࿰…...
wordpress 插件角色/个人网站免费推广
Java的异常 1.Java中所有异常和错误的基类:Throwable Throwable error Exception (检查时异常)(运行时异常) RuntimeException2.Java中的异常分为运行时…...
网站建设收获与体会/关键字排名查询
文章目录看我回旋踢url编码MD5一眼就解密看我回旋踢 下载附件,加压之后,是个txt文件 synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}凯撒密码 凯撒密码在线工具 位移13位之后得到flag url编码 将附件进行url解码 flag{and 11}MD5 md5编码解密&…...