python_06

56、继承

# 继承:实现代码的重用,相同的代码不需要重复的编写class Animal:def sleep(self):print("睡觉")def eat(self):print("吃饭")# 定义了一个dog类,让它继承自Animal类,dog就拥有了,动物类Animal 的所有的属性和方法
class Dog(Animal):def chi_shi(self):print("吃shi")class Fish(Animal):def swim(self):print("游泳")dog1 = Dog()
dog1.chi_shi()
dog1.eat()
dog1.sleep()# 鱼类和狗类没有直接关系,无法使用狗类里面的方法 但可以使用Animal中的属性和方法
fish1 = Fish()
fish1.swim()
fish1.eat()

57、继承的传递性

class Animal:def sleep(self):print("睡觉")def eat(self):print("吃饭")class Dog(Animal):def jiao(self):print("汪汪~~~")class ErHa(Dog):def char_jia(self):print("拆家")erha1 = ErHa()
erha1.eat()     # 继承是有传递性的,二哈继承自狗,狗又继承自动物,二哈也有动物类的属性和方法
erha1.sleep()
erha1.jiao()
erha1.char_jia()

58、继承的覆盖性

class Animal:def sleep(self):print("睡觉")def eat(self):print("吃饭")# 子类继承自父类,相同的函数名,会被覆盖
class Dog(Animal):def eat(self):print("吃骨头")dog1 = Dog()
dog1.eat()

59、继承的扩展性

class Animal:def sleep(self):print("睡觉")def eat(self):print("吃饭")# 子类继承自父类,相同的函数名,会被覆盖
class Dog(Animal):def eat(self):super().eat()   # 给父类的同名函数eat进行了扩展、追加print("吃骨头")dog1 = Dog()
dog1.eat()      # 打印了父类和子类的eat方法

60、继承和父类的私有属性和私有方法

class Animal(object):  # object,是基类,就算什么都不需要继承,也要写上def sleep(self):print("睡觉")self.__eat()    # 自己可以调用自己的私有内容def __eat(self):    # 私有的方法print("吃饭")# 子类继承自父类,相同的函数名,会被覆盖
class Dog(Animal):def eat(self):passdog1 = Dog()
# dog1.__eat()   # 哪怕继承了父类,也无法使用父类中的私有属性和私有方法
dog1.sleep()     # 可以通过 父类的公有函数 调用 父类的私有内容,然后子类再调用 父类的这个公有函数 即可获得 父类的私有内容

61、多态

# 不同的子类对象调用相同的父类方法,产生不同的执行结果
# 多态可以增加代码的灵活度class Dog(object):  # 不继承任何类,也要写object基类,为了让代码兼容性更好def __init__(self,name):self.name = namedef game(self):print(f"{self.name}傻玩")class XiaoTianQuan(object):def __init__(self,name):self.name = namedef game(self):print(f"{self.name}飞天玩")class maxi_dog(object):def __init__(self,name):self.name = namedef game(self):print(f"{self.name}踩钢丝玩")class Person(object):def __init__(self,name):self.name = namedef game_with_dog(self,dog):print(f"{self.name}和{dog.name}")dog.game()dog1 = Dog("大白")
xtq = XiaoTianQuan("哮天犬")
xtq.game()
hong = Person("红红")
maxi = maxi_dog("马戏")
hong.game_with_dog(dog1)  # 传入的参数是一个实例化的对象 dog1
hong.game_with_dog(xtq)
hong.game_with_dog(maxi)

62、类属性

class Wolf(object):# 没有写在__init__中的,而是直接写在类中的属性,叫做类属性,记录的东西是属于整个类的特征,而不是具体实例化对象的特征area = "大草原"   # Wolf类的特征,而不是某个对象的属性def __init__(self,name):self.name = name   # 普通的属性 某个实例化对象的属性
#
lang1 = Wolf("小白")
# print(lang1.name)   # 普通属性
# print(lang1.area)   # 类属性,是类独有有的
#
lang2 = Wolf("小灰")
# print(lang2.name)
# print(lang2.area)
#
# # 普通属性更改,只影响这个类实例化出来的对象
# lang1.name = "哈哈哈"  # 获取普通属性,进行更改  普通属性跟着实例化对象走的,和lang2无关
# print(lang1.name)# 给lang1新赋值了一个area属性,设置为了 大山  和 lang2 无光,lang2依然是大草原
lang1.area = "大山"   
print(lang1.area)# lang2 是根据狼对象实例化出来的,area类属性并没有被改变,所以还是打印大草原
print(lang2.area)   # 类名.属性名   就是在修改类属性的值,一旦类属性被修改,后续实例化出来的对象,这个属性值就都被改了
Wolf.area = "北极"    
print(lang1.area)
print(lang2.area)

63、类方法

class Wolf(object):area = "大草原"def __init__(self):self.age = 18def demo(self):print("哈哈")@classmethod    # 装饰器 告诉程序,后面紧接着的一个函数,属于 类函数def set_area(cls,area):  # 类函数 中小括号变为cls, cls代表这个类 相当于 selfcls.area = area     # 在类方法内部 获取类属性的值,进行修改# cls.demo()    # 类方法中无法使用普通方法!!!print("---------")print(Wolf.area)    # 打印出大草原(类属性的值)
Wolf.area = "大山"
print(Wolf.area)Wolf.set_area("雪地") # 类方法、类函数,直接使用 类名.类函数名() 就可以实现调用,没必要实例化在运行
print(Wolf.area)lang1 = Wolf()
print(lang1.age)
lang1.set_area("北极")
print(lang1.area)

64、静态方法

class Cat(object):@staticmethod       # 装饰器  下面的方法是静态方法、静态函数def help():         # ()里面不需要任何参数,什么都不写(self、cls)print("这是一个小猫咪")
Cat.help()

65、利用类属性,记录实例化次数

class Tool(object):count = 0   # 类属性,用做记录初始化次数(实例化次数) 是类的特性,而不是实例化的对象的特性def __init__(self,name):self.name = nameTool.count += 1     # count 不是普通变量,必须  类名.count  每次实例化的时候,count自增print(Tool.count)tool1 = Tool("剪刀")
tool2 = Tool("螺丝刀")
print(Tool.count)print("---")class Tool2(object):count = 0   # 类属性def __init__(self,name):self.name = nameTool2.count += 1tool3 = Tool2("电钻")     # 实例化一个对象,并传参
tool4 = Tool2("锤子")
print(Tool2.count)

66、类的综合案例

class Game(object):# 有最高分属性,类属性top_score = 0   # 最开始每人玩,默认最高分为0@staticmethod   # 静态方法 提示性信息  与其他无关的 无需实例化 类名.静态函数 即可调用def show_help():print("提示信息:使用植物阻挡僵尸的进攻")# 需要展示最高分(类方法)@classmethod   # 类方法 也无需实例化  类名.类方法  即可调用def show_top_score(cls):# cls就是这个类Gameprint(f"当前最高分为{cls.top_score}")# 初始化时记录玩家姓名def __init__(self,name):self.name = name# 玩游戏的方法,设置最终得分(普通方法/普通函数)def start_game(self,score):print(f"{self.name}开始游戏了,最终得分是{score}")# 玩游戏后的分数如果大于最高分,当前分数就是最高分if score > Game.top_score:Game.top_score = score# 1.查看你这个游戏怎么玩
Game.show_help()# 2.查看当前最高分
print(Game.top_score)# 3.实例化玩家
player1 = Game("小张") 
player1.start_game(98)
print(Game.top_score)player2 = Game("小王")
player2.start_game(998)
print(Game.top_score)
Game.show_top_score()

67、异常处理

# 就把 try except 当成 if else 来使用try: # 把有可能出问题的代码,放在try中num1 = int(input("请输入一个数字:"))
except: # 当try中的代码出现异常,才会执行下列代码print("请输入数字才可以哟~~~")# a = int(input("请输入数字1:"))
# b = int(input("请输入数字2:"))
# print(a / b)try:a = int(input("请输入数字1:"))b = int(input("请输入数字2:"))print(a/b)
# 根据异常的类型,来提示对应的文字 (先故意试错,看看是什么错误)
# except ValueError:
#     print("请输入数字")
# except ZeroDivisionError:
#     print("除数不能为 0 哟")# 不用像上述代码,把错误区分的那么清楚,直接打印报错信息,把报错信息都保存在res中
except Exception as res:    # 未知错误,直接写成这样   as是起别名   别名叫res  只把报错信息原样打出print(f"报错的信息是:{res}")
else:   # 程序无异常,才会执行这里的代码,否则这里的代码就不会执行print("程序没问题")finally:    # 无论程序是否有异常,都会执行这里的代码print("无论如何我都会运行呀~~~")# 练习:
try:a = int(input("请输入第一个数字a = : "))b = int(input("请输入第二个数字b = : "))print(a/b)
except Exception as res:print(f"报错的信息是:{res}")
else:print("---程序没有问题---")
finally:print("---无论程序是否异常,都会执行这里的代码---")

68、异常的传递

# 当方法执行出现异常,会将异常传递给调用一方,如果传递到主程序,仍然没有
# 异常处理,程序才会被终止
# 在开发中,可以在主函数(入口)中增加异常捕获,只要出现异常,都会传递到主函数的异常捕获中,
# 这样就不需要再代码中,增加大量的异常捕获,能够保证代码的整洁
def a():return int(input("请输入数字:"))def b():return a()try:print(b())   # 就算a()里有一万个input(),这里也只需写一个b()即可 这样try中就不用写很多input(),保持整洁
except Exception as hehe:print(f"报错信息是:{hehe}")

69、主动抛出异常

# 请输入8个字以上的密码  不满足条件  就抛出异常
#
# 在开发中d
def input_pwd():pwd = input("请输入8个字以上的密码: ")if len(pwd) > 8:    # 判断长度是否大于8return pwdelse:# 不符合我的业务需求,我要主动的抛出异常res = Exception("您输入的内容不够8个")raise res   # 抛出我刚刚写的异常报错信息try:user_pwd = input_pwd()print(user_pwd)
except Exception as haha:       # 得到上面raise 的异常信息,保存到haha变量中print(f"自己写的报错信息是:{haha}")

70、

def sum(a,b):print(a + b)
def max(a,b):if a > b:print(a)else:print(b)

71、

import py70 as p70  # 导入py70文件并起别名叫p70  as 起别名# 别名.sum  要用的函数属于py70里面的
# 如果起别名,就用别名,否则就用原名
p70.sum(1,3)p70.max(6,9)

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

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

相关文章

Apple HEVC Stereo Video

1. 前言 为左眼和右眼携带立体视频视图的能力产生了更丰富的用户体验。 立体视频(有时称为“3D 视频”)向用户的左眼呈现一个图像,向用户的右眼呈现另一幅图像(通常是相关的)以产生立体效果,定义为&#x…

JDBC学习笔记(二)进阶篇

一、JDBC 扩展 1.1 实体类和ROM 实体类代码: package com.atguigu.advanced.pojo;//类名就是数据库表的 t_ 后面的单词全写 public class Employee {private Integer empId;//emp_idprivate String empName;//emp_nameprivate Double empSalary;//emp_salarypriva…

太极图形课——渲染——光线追踪实战第一部分呢

根据概念部分我们逐步通过太极实现光线追踪 总共可以分为5步 第一步:如何发射出一道光? 首先明确何为一道光,光从我们眼睛(摄像机)射出,那么在三维虚拟世界里,我们可以认为这道光就是一条射线…

【Docker学习】docker login/logout

docker login和docker logout是两个相反的操作,分别是登入/登出注册表(镜像仓库)。我们一般说的公共镜像仓库(docker hub)是不需要登入的,但私有的镜像仓库通常是需要登入(安全考虑)…

【TB作品】msp430g2553单片机,读取GY-30,光强传感器,显示到oled

硬件 七针 OLED * P2.0 CS* P2.1 DC* P2.2 RES* P2.3 D1 SDA* P2.4 D0* VCC 3.3V* GND GNDGY-30 //gy-30 //SCL--P1.4 //SDA--P1.5 //VCC--3.3V //GND--GND //ADDR--GND部分程序 #include <msp430.h> #include "gy30.h" #include "oled.h"f…

凸包算法Revit实例

ConvertHullAlgorithm &#xff08;凸包算法&#xff09; 引用 《计算几何》-导言&#xff1a;凸包的例子 前言 算法的基本逻辑与理念来自于《计算几何》这本书&#xff0c;后面其他几章的演示也都会在Revit中实现调试&#xff0c;希望能够每个算法都找一个合适的实现方向在R…

Pytorch实用教程:pytorch中 argmax(dim)用法详解

argmax(dim) 是 PyTorch 中的一个函数,用于找出指定维度上最大值的索引。argmax 函数是在多维张量上进行操作的,通过 dim 参数可以指定在哪一个维度上查找最大值。 参数解释 dim: 指定要在哪个维度上执行寻找最大值的操作。维度的索引从 0 开始,对应于张量的各个轴。返回值…

实现从微信聊天记录中获取信息,整理:具体的项目名称,要整理的日期范围,关键数据点(如任务完成度,主要负责人,重要的待解决问题)

使用开源模型从微信聊天记录中获取并整理信息&#xff0c;可以通过以下步骤实现&#xff1a; 数据收集&#xff1a; 确保合法合规地获取聊天记录。这可能需要用户的明确授权。将微信聊天记录导出为可处理的格式&#xff0c;例如文本文件或JSON。 数据预处理&#xff1a; 清洗数…

美国遛宠黑科技掀起热潮,沃尔玛跨境新品解析

美国遛宠黑科技掀起热潮&#xff0c;这一趋势不仅反映了宠物主人们对于宠物关怀的日益加深&#xff0c;也展示了科技在日常生活中的广泛应用。在这一热潮中&#xff0c;创新遛宠产品为宠物主人带来便利与体验。沃尔玛作为全球零售巨头&#xff0c;紧跟趋势&#xff0c;推出跨境…

用C#(WinForm)开发触摸屏,体验感满满

用C#&#xff08;WinForm&#xff09;开发触摸屏&#xff0c;体验感满满

加油卡APP系统开发,打造便利的汽车加油模式

随着人们生活水平的提高&#xff0c;汽车已经成为了家中必备的交通工具&#xff0c;因此&#xff0c;汽车加油也成为了大众经常要做的事。在互联网的发展下&#xff0c;汽车加油卡APP出现在了居民的生活中。加油卡系统与各个加油站合作&#xff0c;提供各种优惠折扣&#xff0c…

【Unity美术】spine软件的使用—2D动画的制作

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

Android Bundle的作用

Android Bundle的作用 Bundle作用 Bundle作用 Bundle主要用于传递数据&#xff1b;它保存的数据&#xff0c;是以key-value(键值对)的形式存在的传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组&#xff0c;也可以是对象或对象数…

透视亚马逊云科技中国峰会:生成式AI全面提速,加速行业应用落地

导读&#xff1a;亚马逊云科技在中国&#xff0c;生成式AI与行业化战略齐头并进。 “亚马逊云科技致力于成为企业构建和应用生成式AI的首选。” 近日2024亚马逊云科技中国峰会上&#xff0c;亚马逊全球副总裁、亚马逊云科技大中华区总裁储瑞松分享了亚马逊云科技中国业务最新进…

C#面:请解释ASP.NET中的web页面与其隐藏类之间的关系

在 ASP.NET 中&#xff0c;每个web页面都对应着一个隐藏类&#xff0c;这个隐藏类是由 ASP.NET 框架自动生成的。这个隐藏类继承自Page类&#xff0c;它是 ASP.NET 页面的基类。隐藏类的命名规则是以页面的名称为基础&#xff0c;加上一个下划线和一串随机生成的字符。 隐藏类…

通过ffmpeg 将wav格式转为mp3格式.

通过ffmpeg实现将wav转为mp3格式.需要下载一个ffmpeg放到执行文件所在目录. 我ffmpeg的下载地址为:ffmpeg.exe下载-ffmpeg.exe32&#xff06;64位下载免费版-旋风软件园 use ShellAPI; {$R *.dfm}procedure ConvertWavToMp3(const InputFile, OutputFile: string); varExecu…

Linux下文件权限管理

任务要求 1. 在跳板机上为开发部门专门创建一个目录&#xff0c;只允许开发部门所有员工使用该目录 2. 其他人员不能进入和查看该目录里的内容 任务分解 1. 在跳板机给开发部门创建目录 2. 对该目录做好权限的管控工作 只允许开发部门的所有人使用&#xff0c;创建、删除…

无人机航迹规划:人工原生动物优化器(Artificial Protozoa Optimizer ,APO)求解无人机路径规划,提供MATLAB代码

一、无人机模型介绍 单个无人机三维路径规划问题及其建模_无人机路径规划场景建模-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、人工原生动物优化算法APO求解无人机路径规…

linux 系统被异地登录,cpu占用拉满100%

一般是kswapd0导致的cpu占用异常 按顺序执行以下操作 在控制台执行top命令&#xff0c;查看占用最高的是否kswapd0。基本100%占用。记下该进程ID 5081 执行查找命令 find / -name kswapd0 显示查找结果&#xff1a; /proc/3316/.X2c4-unix/.rsync/a/kswapd0 /root/.configrc…

【Flutter】 TextField限制长度时, 第三方手写输入法、ios原始拼音输入法输入被吞问题

问题描述 TextField限制长度时&#xff0c; 当你的输入字符长度已经到了最大值-1时&#xff0c;使用第三方手写输入法或者ios原生拼音输入法输入liang&#xff08;什么拼音都行&#xff0c;这里只是举例&#xff09;&#xff0c;输到i那么li都会消失。 原因分析 这是因为第三…