dw怎么做连接到另外一个网站,wordpress调用百度网盘视频播放器,asp.net开发网站好不好,昆明 做网站 vr一、多态 多态指的是一类事物的多中形态 相同的方法#xff0c;产生不同的执行结果 运算符 * 的多态 int int 加法计算 str str 字符串拼接 list list 列表的数据合并 在python中可以使用类实现一个多态效果 在python中使用重写的方式实现多态 #xff08;1#xff09;定…一、多态 多态指的是一类事物的多中形态 相同的方法产生不同的执行结果 运算符 * 的多态 int int 加法计算 str str 字符串拼接 list list 列表的数据合并 在python中可以使用类实现一个多态效果 在python中使用重写的方式实现多态 1定义两个类老师、车 2定义老师类的属性姓名定义老师类的方法开车、停车 3定义车类的属性类型定义车类的方法开启、停止 4联系老师开车执行程序观察效果 # 多态
class Teacher:def __init__(self,name):self.name namedef run(self):print(f{self.name}老师开车)def stop(self):print(f{self.name}老师停车)class Car:def __init__(self,type):self.type typedef start(self):print(f{self.type}启动)def close(self):print(f{self.type}熄火)t Teacher(张三)
c Car(小汽车)c.start()
t.run()
c.close()
t.stop()#使用继承方式调整执行的方法
# 多态
class Teacher:def __init__(self,name):self.name namedef run(self):print(f{self.name}老师开车)def stop(self):print(f{self.name}老师停车)class Car(Teacher):def __init__(self,type,name):super().__init__(name)self.type typedef start(self):print(f{self.type}启动)super().run()def close(self):print(f{self.type}熄火)super().stop()c Car(小汽车,张三)c.start()
c.close() 5思考老师有可能开小轿车、骑自行车、坐地铁等该怎么改进程序呢 多态实现的流程 1-定义一个父类在父类中定义需要执行的业务方法具体方法的逻辑不用实现直接pass由继承的子类实现 2-定义多个功能的子类继承父类在子类中对父类方法重写实现自己子类的逻辑 3-封装一个统一的函数处理方法让开发人员调用该方法 # 多态
class Teacher:def __init__(self,name):self.name namedef run(self):passdef stop(self):passclass Car(Teacher):def __init__(self,type,name):super().__init__(name)self.type typedef run(self):# 在多态实现时子类继承父类并对父类方法进行重写print(f{self.type}启动)print(f{self.name}老师开车)def stop(self):print(f{self.type}熄火)print(f{self.name}老师停车)class Metro(Teacher):def __init__(self,type,name):super().__init__(name)self.type typedef run(self):# 在多态实现时子类继承父类并对父类方法进行重写print(f{self.type}启动)print(f{self.name}老师乘坐地铁)def stop(self):print(f{self.type}到站)print(f{self.name}老师下车)# 单独封装一个行为函数
# 该函数就是对外提供一个函数接口其他开发人员使用就调用函数
def action(obj):# obj接收一个对象obj.run()obj.stop()c Car(越野车,张三)
action(c)m Metro(地铁1号线,李四)
action(m) 二、文件读写 通过文件读写完成对文件数据的处理 使用python中open方法实现对文件的读写 格式 会返回一个文件描述符 使用文件描述符进行数据的读取或写入 f open(文件位置,读写方式,文件读写格式(utf-8gbk))data f.read() 读取
f.write(数据) 写入f.close() 关闭文件
2-1 文件数据读取
# 文件数据读取
# 1-打开文件 创建文件描述符
# open的第一个参数指定读取的文件路径 可以使用绝对路径 也可以使用相对路径 windos的路径需要改斜杠
# 第二参数指定读写方式 r读 w写
# 第三个参数指定文件编码格式方便读取中文数据 常用的两种utf-8 gbk
f open(路径,r,encodingutf-8)# 读取数据文件
# 第一种 读取一行数据
# line_data1 f.readline()
# print(line_data1)
# line_data2 f.readline()
# print(line_data2)# 第二种读取多行数据 将读取的多行数据放入列表中 该方式最常用
lines_data f.readlines()
print(lines_data)# 第三种 一次将所有数据读取出来当成一个完整的字符串数据 前面已经读取过数据 read就无法再读到数据 所以在实际开发中三种方式选择一种
# data f.read()
# print(data)
# print(type(data))# 数据取完成后可以使用close方法关闭文件
f.close()2-2 数据写入文件 写入方式 w 覆盖写入数据 a 追加写入数据 写入类型 要求写入数据是字符串类型 # 文件数据写入
# 1-先打开文件获取文件描述符 文件描述符用来操作文件
# 使用相对路径 代码文件运行的所在路径
# csv文件是以逗号分割的数据文件 可以使用excel打开
# w是覆盖写入数据 a是追加写入数据
f open(./data.csv,a,encodingutf-8)# 写入数据
f.write(3,王五,20,男)
f.write(\n) # 写入换行符 进行换行
f.write(4,赵六,22,男)
f.write(\n)#关闭文件
f.close()
2-3 二进制文件读写
# 二进制文件数据读写
# 1-打开文件获取文件描述符
f open(文件路径,rb)# 使用read一次性全部读取
data f.read()
print(data)
# 关闭文件
f.close()# 打开新的文件将图片数据保存
f2 open(./2.jpeg,wb)f2.write(data)f2.close()
2-4 with open 语法 读写文件
# 使用with open自动关闭文件
with open(文件路径,r,encodingutf-8) as f:data f.read()print(data)with open(data.json,w,encodingutf-8) as f:f.write({id:1,name:张三})f.write(\n)f.write({id:2,name:李四})f.write(\n) 文件后缀 txt csv json 文件后缀和文件的数据本身没有直接关系 后缀只是为了说明可以使用那种工具打开该文件方便识别文件类型 三、异常处理
3-1 常见异常
3.1.1 索引错误 索引下标异常一般发生在数据取值 3.1.3 字典Key值错误 3.1.3 类型错误 3.1.4 文件错误 # 索引下标取值错误
data itcast
data[100]# 字典取值错误
data {name:张三}
data[age]# 类型错误
data 100
data2 10
data3 data/data2# 文件读取错误 路径不存在
with open(aaa.txt,r,encodingutf-8) as f:f.read()
3-2 异常捕获 通过语法捕获代码中的异常根据异常信息解决异常的问题保证代码能持续运行 格式 try: 需要捕获遗产干的代码片段有开发人员自己决定哪些代码需要捕获 except: 捕获到异常后处理的逻辑 # 进行异常捕获 try: # 把出现的错误的代码逻辑放入try的作用域中 data 15/0 except: # 捕获到异常处理的业务逻辑 print(异常被捕获) # 异常被捕获后可以正常执行后续的逻辑 print(其他代码逻辑) 3-3 指定异常类型捕获
# 可以捕获所有异常
try:data_str itcast# data_str[100]f open(aasd.txt,r,encodingutf-8)
except:# 捕获到异常处理的业务逻辑print(异常被捕获)# 异常被捕获后可以正常执行后续的逻辑
print(其他代码逻辑)# 捕获固定的异常 处理固定错误
try:# data 15/0# f open(aasd.txt, r, encodingutf-8)data_stritcastdata_str[100]
# 捕获指定异常
except (FileNotFoundError,ZeroDivisionError,IndexError):print(捕获0为除数的异常)
print(其他代码逻辑)
3-4 异常的其他处理
try:data 15/0# Exception as e 获取异常的错误信息# 可以捕获到异常后输出错误信息
except Exception as e:print(异常被捕获)print(e)
else:print(else 没有异常逻辑)
finally:print(finally 无论是否有异常都执行)
3-5 函数中的异常处理
#在调用函数时进行异常捕获
def func(a,b):data a bprint(data)try:# 调用其他开发人员编写的代码处理错误func(10,20)
except Exception as e:print(e)#封装函数时异常捕获
# 函数的异常处理
def func(a, b):data 0# 在封装的函数内捕获异常try:data a bexcept:# 函数内自己处理异常print(异常错误)return data# 调用函数
func(10,20)#函数内捕获到异常不处理再传递给掉用函数的地方
# 函数的异常处理
def func(a, b):data 0# 在封装的函数内捕获异常try:data a bexcept:# 将异常的错误信息传递到调用地方 当前没有处理异常raise Exception(函数内计算错误)return data# 调用函数时捕获函数执行的异常
try:func(10,20)
except Exception as e:print(异常捕获)print(e)# 多个函数中都要使用的变量可以定义成全局变量,通过global声明就可在多个函数就可以共享全局数据
name_list []
password_list []# 登录注册功能
def login():# 函数作用域# 通过四个空格来确认函数所执行的逻辑从哪里开始# 列表元组集合字典数据可以省略global声明15/0global name_listglobal password_listfor num in range(3): # [0,3) 0,1,2name input(请输入用户名:)password input(请输入密码:)# 先判断用户名是否正确if name in name_list:# 在判断密码是否正确if password in password_list:print(登录成功)# 适应break关键会结束循环不再进行取值breakelse:print(密码不正确)else:print(用户名不正确)def register():global name_listglobal password_listname input(请输入注册的用户名)password input(请输入出注册的密码)# 将用户的名字和密码添加到全局的数据列表name_list.append(name)password_list.append(password)while 11:num input(1-登录 2-注册 3-支付 4-下单 5-退出程序:)if num 1:# 函数功能的调用try:login() # 函数名()except:print(登录出现错误)elif num 2:register()elif num 3:passelif num 4:passelse:break