定制自己的数据类型

#继承"""class LIST(list):    def append(self, p_object):        if not isinstance(p_object,int):            raise TypeError(‘must be int‘)        super().append(p_object)

def insert(self, index, p_object):        if not isinstance(p_object,int):            raise TypeError(‘must be int‘)        super().insert(index,p_object)

li =LIST([1,2,3])print(li)#li.append(‘2‘)li.append(4)print(li)li.insert(0,-10)print(li)#li.insert(0,‘-1‘)print(li)"""#授权import timeclass Open:    def __init__(self,filepath,m=‘w+‘,encode=‘utf-8‘):        self.filepath =filepath        self.mode =m        self.encoding =encode        self.x =open(filepath,mode =m,encoding=encode)    def write(self,line):        t =time.strftime(‘%Y-%m-%d %X‘)        self.x.write(‘%s  %s‘%(t,line))

def __getattr__(self, item):        print(‘%s %s‘%(self,item))#getattr(self.x,item),中的item是字符串        return getattr(self.x,item)#把它转化成self.x.item(属性),        #print(‘%s  %s‘(self))f =Open(‘a‘)f.write(‘12112121\n‘)f.write(‘121212121\n‘)f.seek(0)print(f.read)#查询f.read,但是没有找到,f.read,所以就触发__getattr__方法
时间: 2024-08-06 03:46:52

定制自己的数据类型的相关文章

爱根,征服我的一天[isinstance,issubclass]、反射、内置attr,定制自己的数据类型

今日重点: 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 isinstance,issubclass # isinstance(obj,cls)检查是否obj是否是类 cls 的对象. # issubclass(sub,super)检查sub类是否是 super 类的派生类. class Peop

定制自己的数据类型(二次加工标准类型(包装))

---恢复内容开始--- 包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的方式进行二次加工) 定制了子类List的append,多了类型检查功能 class List(list):#继承list所有的属性,也可以派生出自己新的,比如append和mid def append(self,p_object): '派生自己的append:

day23 组合(补充)和 继承

一.组合 #组合 #人 类 -- 武器类 #狗 类 #继承 #组合表现的是:谁有什么的关系 #人有武器 #学校有学生 #学生有课程 #circle from math import pi class Circle: def __init__(self,radius): self.radius = radius def perimeter(self): return 2 * pi * self.radius def area(self): return pi * self.radius **2 #

第十篇 面向对象的程序设计

第十篇 面向对象的程序设计 阅读目录 一 面向对象的程序设计的由来 二 什么是面向对象的程序设计及为什么要有它 三 类和对象 3.1 什么是对象,什么是类 3.2 类相关知识 3.3 对象相关知识 3.4 对象之间的交互 3.5 类名称空间与对象/实例名称空间 3.6 小结 四 继承与派生 4.1 什么是继承 4.2 继承与抽象(先抽象再继承) 4.3 继承与重用性 4.4 组合与重用性 4.5 接口与归一化设计 4.6 抽象类 4.7 继承实现的原理(继承顺序) 4.8 子类中调用父类方法 五

DSB

Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与寄存器,内核态与用户态及如何切换 存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池 磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU 磁带 设备驱动与控制器 总线与南桥和北桥 操作系统的启动流程 应用程序的启动流程 day02 作业要求一:整理操作系统博客 为何

08-面向对象----J

一 面向对象的程序设计的由来 请参考:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什么是面向对象的程序设计及为什么要有它 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦

Day17:类的继承、派生、组合和接口

一.类的继承.派生和组合 继承是一种创建新类的方式,在Python中,新类可以继承一个或多个父类,父类又可称为基类或者超类,新建的类称为派生类或子类. 在Python3中,所有类都默认继承object,都是新式类.在Python2中,有经典类和新式类.没有继承object类以及object的子类的类都是经典类. 1.继承 Python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass clas

python 作业

Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与寄存器,内核态与用户态及如何切换 存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池 磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU 磁带 设备驱动与控制器 总线与南桥和北桥 操作系统的启动流程 应用程序的启动流程 day02 作业要求一:整理操作系统博客 为何

python篇1.12.2---继承,多态与多态性,封装

1.什么是继承 继承是一种创建 新的类的 方式. 在python中,新的类可继承自一个或多个父类,原始的类称为 基类或超类,新建的类 称为 派生类或子类. class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass