python 二次加工标准类型(包装)

发布时间:2022-05-11 09:55:51 人气:180 作者:多测师

  包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型

  来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的

  方式进行二次加工)。

  #基于继承的原理,来定制自己的数据类型(继承标准类型)

  class List(list): #继承list所有的属性,也可以派生出自己新的,比如append和insert

  def append(self, p_object): #自己加工追加的方法

  if not isinstance(p_object,int): #加上条件,不是int就抛出异常

  raise TypeError("must be int") #返回提示输入类型

  #self.append(p_object) #注意:这样就无限递归了

  super().append(p_object) #此时才会完成追加

  def insert(self, index, p_object): #自己加工指定位置插入的方法

  if not isinstance(p_object,int): #加上条件,不是int就抛出异常

  raise TypeError("must be int") #返回提示输入类型

  super().insert(index,p_object) #此时才会完成插入

  l1 = List([0,1,2]) #实例化对象l1

  print(l1) #打印列表l1

  l1.append(3) #对象l1追加元素3,注意必须是int

  print(l1) #打印列表l1

  # l1.append("5") #此时会抛出异常,"5"不是int

  l1.insert(0,-1) #在下标0的位置,插入元素-1,注意元素的类型

  l1.insert(5,4) #在下标5的位置,插入元素4,注意元素的类型

  print(l1) #打印列表l1

  print(l1.index(4)) #获取元素的下标,没有派生出自己的方法的时候,会继承父类的方法

python 二次加工标准类型(包装)

  --------------------输出结果------------------------

  [0, 1, 2]

  [0, 1, 2, 3]

  [-1, 0, 1, 2, 3, 4]

  5

  授权:授权是包装的一个特性, 包装一个类型通常是对已存在的类型的一些定制,这种做法可以新建,修改或删除原有

  产品的功能。其它的则保持原样。授权的过程,即是所有更新的功能都是由新类的某部分来处理,但已存在的功能就授权给

  对象的默认属性。

  实现授权的关键点就是覆盖__getattr__方法。

  import time

  class Open: #open是一个函数,不是类,不能用继承,so,用另一种方式:授权

  def __init__(self,file_path,m="r",endoce="utf8"):

  self.file = open(file_path,mode=m,encoding=endoce) #获取文件句柄

  self.file_path = file_path #文件路径

  self.mode = m #文件打开模式

  self.encoding = endoce #文件的编码方式

  def write(self,line): #写入文件

  t = time.strftime("%Y-%m-%d %X") #获取时间格式

  self.file.write("%s ---> %s"%(t,line)) #前面加上时间,按格式写入

  def __getattr__(self, item): #当方法不存在的时候,会触发它的执行

  return getattr(self.file,item) #获取文件其他的方法,并返回给对象

  f1 = Open("a.txt","w") #实例化对象f1,创建文件a.txt,以w模式

  f1.write("1、你好,我摩旅去了!\n") #按自己加工的方法写入内容

  f1.write("2、你好,我摩旅去了!\n") #按自己加工的方法写入内容

  f1.write("3、你好,我摩旅去了!\n") #按自己加工的方法写入内容

  f1.close() #关闭文件

  f2 = Open("a.txt","r") #实例化对象f2,查看文件a.txt,以r模式

  print(f2.read()) #打印输出a.txt的文件内容

  f2.seek(0) #刚看完,光标走到最后位置了。要想再看,就得把光标调到最开始位置

  print("-->:",f2.read()) #加上标识,再看一遍

  f2.close() #关闭文件

  以上内容为大家介绍了Python增强,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

  以上内容为大家介绍了python 二次加工标准类型(包装),希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线