关于反射的几个内置函数的补充及包装标准类型
一、我们在前面的章节中学习了 __getattr__ __setattr__ 以及 __delattr__的用法,
其实这些都是类的内置函数,如果我们在自己定义的类里重写了这几个函数,
会直接覆盖了类中这几个函数的默认功能,换个角度,我们可以直接改写这些函数,让它在已有
功能的基础上添加新功能
class Foo: x = 2 def __init__(self,y): self.y = y def __delattr__(self, item): print("正在执行__setattr__,这里可加新功能哦") self.__dict__.pop(item) f1 = Foo(7) print(f1.__dict__) del f1.y print(f1.__dict__)
二、包装一个标准类型
list str tuple 等等都是类
我们可以创建新类继承他们,同时增加新功能
①
class List(list): def show_midle(self): #求列表中间值 mid_index = int(len(self)/2) return self[mid_index] l2 = List('hellojinling') print(l2.show_midle()) print(l2)
②
class List(list): def append(self,p_object): #修改append方法 print("正在添加") if type(p_object) is str: #判断一下,只添加字符串 super().append(p_object) def show_midle(self): #求列表中间值 mid_index = int(len(self)/2) return self[mid_index] l2 = List('hellojinling') print(l2) l2.append("LOVE") print(l2)
一个奋斗中的产品小白