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

Python 单继承、多继承、@property、异常、文件操作、线程与进程、进程间通信、TCP框架 7.24

单继承

class luban:def __init__(self, name):self.name = nameself.skill = "摸鱼飞弹"self.damageLevel = 20def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会造成一击必杀的效果".format(self.name, self.skill, self.damageLevel))class luban7(luban):pass# __name__ :魔法方法:类似于main函数,只在当前python文件做一个测试的入口
# 一旦运行,系统直接执行 __name__ 入口下的代码
if __name__ == '__main__':  # 输入main提示补全lu = luban7("鲁班七号")lu.attack()  # 访问基类继承过来的方法

多继承

class luban:def __init__(self, name):self.name = nameself.skill0 = "摸鱼飞弹"self.damageLevel = 20def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会造成一击必杀的效果".format(self.name, self.skill0, self.damageLevel))class spaceLab:def __init__(self, name):self.name = nameself.skill1 = "太空嘴炮"self.perDamage = 30def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会摧毁敌方水晶".format(self.name, self.skill1, self.perDamage))# 多继承,继承顺序 从右边开始,左边类的方法被继承会隐藏右边类的同名方法
class luban7(luban, spaceLab):# 派生类重写 __init__ 魔法方法def __init__(self, name):# 显示调用基类的 构造函数进行初始化 基类部分spaceLab.__init__(self, name)luban.__init__(self, name)self.name = nameself.skill2 = "7号嘴炮"self.damage = 50def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会摧毁自家水晶".format(self.name, self.skill2, self.damage))def attack0(self):luban.attack(self)def attack1(self):spaceLab.attack(self)# __name__ :魔法方法:类似于main函数,只在当前python文件做一个测试的入口
# 一旦运行,系统直接执行 __name__ 入口下的代码
if __name__ == '__main__':  # 输入main提示补全lu = luban7("鲁班七号")lu.attack()lu.attack0()lu.attack1()  # 访问基类继承过来的方法

@property

class Demo:def __init__(self, v):self.__value = v@property  # @property说明函数时,函数名可以当成一个成员变量的使用,目的是获得属性,提示程序效率def set(self):return self.__value@set.setter  # @ xxx.setter说明下面,xxx必须是前面代码行定义的函数名def set(self, v):self.__value = vif __name__ == '__main__':obj = Demo(20)# obj.set(30)# print(obj.set())print(obj.set)obj.set = 30print(obj.set)  # 直接访问函数名,相当于在访问 __value

获取目录流

import ospath = "../day2"
# os.path.exists():检测某个路径是否存在
if os.path.exists(path):print("文件夹存在")
else:print("文件夹不存在")# mkdir(): 创建一个目录os.mkdir(path)
# listdir() :列举出某个路径中的所有文件名,返回文件名的列表
files = os.listdir(path)  # 当前文件夹下的所有文件名
print(type(files))
print(files)
print("1212")
for file in files:if os.path.isfile(path + "/" + file):print(file, "普通文件")elif os.path.isdir(path + "/" + file):print(file, "目录文件")

文件的操作

在这里插入图片描述
在这里插入图片描述

import osif __name__ == '__main__':# file = open(file="./file.txt", mode="w+")with open(file="./file.txt", mode="a+") as fd:# seek() : 让文件指针进行偏移fd.seek(0, os.SEEK_SET)# read(n)指定从文件中读取n字节数据 read()中不写参数n时,表示默认读取所有数据# buf = fd.read(32)# print(type(buf))# print(buf)# readline(n) : 读取一行中前n个数据# readliness() : 读取文件所有行的数据,返回一个列表buf = fd.readline(5)#  buf = fd.readlines()print(buf)# 关闭打开的文件fd.close()print("hello world")
---------------------------------------------------------------------try:file = open("file.txt", "w")file.write("nihaomemedaa\n")except (IOError, FileNotFoundError) as err:print("open", err)exit(-1)try:buf = "123456789\n"file.write(buf)buf1 = b"hello world\n"file.write(buf1.decode())l1 = ["nice\n"]file.write(l1[0])# writelines() : 将列表中的所有数据写入文件中,列表中的元素要求必须是字符串类型l2 = ["I'm groot ", "Spide man ", "Iron man"]file.writelines(l2)except (TypeError,) as err:print("write:", err)exit(-1)file.close()

异常

def res(x, y):if y == 0:# 手动抛出异常raise ValueError("y == 0") # 构造值错误的匿名对象return x/yif __name__ == '__main__':a = int(input("a="))b = int(input("b="))try:print("x / y =", res(a, b))except (ValueError, ) as err:  # 接受和捕获异常 后面必须跟元组类型,如果异常类型只有1种,那么必须要用,占位print("除数y不能为0", err)

多线程

from time import sleep# import threading
from threading import Threaddef music(name):for i in range(5):print("I was listening music:{}".format(name))sleep(1)def study(name):for i in range(2):print("I was study:{}".format(name))sleep(5)if __name__ == '__main__':# music("Always online")# study("《杀死那只知更鸟》")# 构造一个线程,指定target指定线程执向函数,args向线程执行函数传递数据t1 = Thread(target=music, args=("Always online", ))t1.start()  # 启动线程t2 = Thread(target=study, args=("《杀死那只知更鸟》", ))t2.start()t1.join()  # 阻塞等待回收线程资源t2.join()

多进程

from multiprocessing import Process
from time import sleepdef music(name):for i in range(5):print("I was listening music:{}".format(name))sleep(1)def study(name):for i in range(2):print("I was study:{}".format(name))sleep(5)if __name__ == '__main__':# music("Always online")# study("《杀死那只知更鸟》")# 构造一个进程,指定target指定线程执向函数,args向进程执行函数传递数据t1 = Process(target=music, args=("Always online", ))t1.start()  # 启动线程t2 = Process(target=study, args=("《杀死那只知更鸟》", ))t2.start()t1.join()  # 阻塞等待回收进程资源t2.join()

互斥锁

from time import sleep# import threading
from threading import Thread, Lockdef music(name, lock):with lock:  # 使用互斥锁,自动加锁,用完自动解锁for i in range(5):print("I was listening music:{}".format(name))sleep(1)def study(name, lock):with lock:for i in range(2):print("I was study:{}".format(name))sleep(5)if __name__ == '__main__':lock = Lock()  # 定义互斥锁# music("Always online")# study("《杀死那只知更鸟》")# 构造一个线程,指定target指定线程执向函数,args向线程执行函数传递数据t1 = Thread(target=music, args=("Always online", lock))t1.start()  # 启动线程t2 = Thread(target=study, args=("《杀死那只知更鸟》", lock))t2.start()t1.join()  # 阻塞等待回收线程资源t2.join()

Python进程间通信的方法

管道

在这里插入图片描述

消息队列

在这里插入图片描述

共享内存

在这里插入图片描述

TCP服务器

在这里插入图片描述

from socket import *# 创建套接字,构造套接字类对象
sockfd = socket(AF_INET, SOCK_STREAM, 0)
# 设置端口重用
sockfd.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
# 绑定
sockfd.bind((INADDR_ANY.to_bytes(0, byteorder="little"), 6666))
# 监听
sockfd.listen(10)while True:# 阻塞等待 接受客户端连接# (connfd, addr) = sockfd.accept()connfd, cliaddr = sockfd.accept()"""创建线程,传递连接套接字,实现多线程的TCP服务器"""print(cliaddr)while True:buf = connfd.recv(32).decode()print("recv:", buf)if len(buf) == 0:breakif buf == "exit":connfd.close()sockfd.close()exit(-1)connfd.close()

TCP客户端

from socket import *
# 创建套接字
sockfd = socket(AF_INET, SOCK_STREAM, 0)
# 连接
sockfd.connect(("127.0.0.1", 6666))while True:data = input("data=").encode()sockfd.send(data)

相关文章:

Python 单继承、多继承、@property、异常、文件操作、线程与进程、进程间通信、TCP框架 7.24

单继承 class luban:def __init__(self, name):self.name nameself.skill "摸鱼飞弹"self.damageLevel 20def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会造成一击必杀的效果".format(self.…...

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录: 本书特色: 问题描述 报错信息如下 Description:An attempt…...

ClickHouse修改和删除操作

文章目录 ClickHouse介绍为什么不推荐更新和删除如何实现更新操作如何实现删除操作官方文档 ClickHouse介绍 ClickHouse是由俄罗斯的Yandex公司开发的一款快速、可扩展的列式数据库管理系统。它专门针对OLAP场景设计,在海量数据分析和查询方面具有出色的性能表现&a…...

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…...

Python编译过程和执行原理

hello,这里是Token_w的文章,主要讲解python的基础学习,希望对大家有所帮助 整理不易,感觉还不错的可以点赞收藏评论支持,感谢! 目录 一. Python执行原理二. Python内部执行过程2.1 编译过程概述2.2 过程图解…...

opencv 图像距离变换 distanceTransform

图像距离变换:计算图像中每一个非零点距离离自己最近的零点的距离,然后通过二值化0与非0绘制图像。 #include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dst…...

消息队列——rabbitmq的不同工作模式

目录 Work queues 工作队列模式 Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式 工作模式总结 Work queues 工作队列模式 C1和C2属于竞争关系,一个消息只有一个消费者可以取到。 代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关…...

QT实现用户登录注册功能

本文实例为大家分享了QT实现用户登录注册的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 1、login.h ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #ifndef LOGIN_H #define LOGIN_H #include <QWidget> namespace Ui { c…...

Docker--harbor私有仓库部署与管理

目录 一、构建私有库 1.下载 registry 镜像 2.在 daemon.json 文件中添加私有镜像仓库地址 3.运行 registry 容器 4.为镜像打标签 5.上传到私有仓库 6.列出私有仓库的所有镜像 7.列出私有仓库的centos镜像有哪些tag 8.测试私有仓库下载 二、Harbor 简介 1.什么是Harb…...

idea复制一份web服务在不同端口启动

Idea 运行多个微服务 Idea 一个服务开启多个端口运行 idea 开启多个端口服务_idea开启多个服务_HaHa_Sir的博客-CSDN博客 IntelliJ IDEA 中一个服务按多个端口同时启动与显示Services面板_一个服务多个端口_Touch&的博客-CSDN博客 Idea中一个服务按多个端口同时启动_idea…...

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

1 背景 京销易系统已经接入大网、KA以及云仓三个条线商机&#xff0c;每个条线商机规则差异比较大&#xff0c;当前现状是独立实现三套系统分别做支撑。 2 目标 2022年下半年CRM目标是完成9个新条线业务接入&#xff0c;完成销售过程线上化&#xff0c;实现销售规则统一。 …...

STM32CUBUMX配置RS485(中断接收)--保姆级教程

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…...

苹果iOS 16.6 RC发布:或为iPhone X/8系列养老版本

今天苹果向iPhone用户推送了iOS 16.6 RC更新(内部版本号&#xff1a;20G75)&#xff0c;这是时隔两个月的首次更新。 按照惯例RC版基本不会有什么问题&#xff0c;会在最近一段时间内直接变成正式版&#xff0c;向所有用户推送。 需要注意的是&#xff0c;鉴于iOS 17正式版即将…...

【100天精通python】Day16:python 模块的搜索目录和导入模块异常时的处理方法

目录 1 搜索模块所在目录 2 模块不在搜索目录中 2.1 添加模块所在的目录到PYTHONPATH环境变量 2.2 修改sys.path 2.3 使用绝对路径导入 2.4将模块复制到Python搜索路径中的任意一个目录 2.5 总结 3 其他导入的模块异常处理 3.1 模块未安装 3.2 模块名称拼写错误 3.3模…...

SOC FPGA介绍及开发设计流程

目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发 一、SoC FPGA简介 SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS)&#xff0c;包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片&#xff0c;SOC FPGA既…...

MySQL vs. Oracle: 函数比较与联系

引言 MySQL和Oracle是两个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们提供了丰富的函数库来处理和操作数据。本文将详细介绍MySQL和Oracle的所有函数&#xff0c;并逐一介绍它们的相同和不同之处&#xff0c;以帮助读者更好地理解和使用这两…...

【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权

一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据&#xff0c;还给测试人员的接口测试工作带来了便利&#xff1b; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…...

经营简报及考核360表格

文章目录 经营简报效果图代码tableObjectSpanMethod.js 考核360委员会效果图 经营简报效果图不需要合并单元格且有汇总表头的 懒得封装了&#xff0c;所以整体没有封装 经营简报 效果图 代码 <template><el-tableref"tableRef":data"tableData.lengt…...

Spring Security 构建基于 JWT 的登录认证

一言以蔽之&#xff0c;JWT 可以携带非敏感信息&#xff0c;并具有不可篡改性。可以通过验证是否被篡改&#xff0c;以及读取信息内容&#xff0c;完成网络认证的三个问题&#xff1a;“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全&#xff0c;使用它需要采用 …...

PyTorch从零开始实现Transformer

文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码&#xff08;可直接运行&#xff09; 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...