关于反射的几个内置函数的补充及包装标准类型

一、我们在前面的章节中学习了  __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)

  

 

 

posted @ 2019-09-29 00:13  绝世刘  阅读(189)  评论(0编辑  收藏  举报