关于反射的几个内置函数的补充及包装标准类型
一、我们在前面的章节中学习了 __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)
一个奋斗中的产品小白

浙公网安备 33010602011771号