zoukankan      html  css  js  c++  java
  • 爱根,深沉。。。基于授权定制列表类型!

    # 1、基于授权定制自己的列表类型,要求定制的自己的__init__方法,
    # 2、定制自己的append:只能向列表加入字符串类型的值,
    # 3、定制显示列表中间那个值的属性(提示:property),
    # 4、其余方法都使用list默认的(提示:__getattr__加反射)。
    class List:
        def __init__(self,type,default=[]):     #输入需要列表的数据类型,如果不想输入的话,默认为空列表。
            self.type=type
            self.res=default                    #这一步需要调用property下面的res函数。
        @property
        def res(self):
            return self.__res                   #这下返回的是self.__res,将self.res封装了起来。
        @res.setter
        def res(self,value):                    #定义setter,在实例的定义阶段就调用,因为property的优先级大于对象自己的数据属性,限制输入的类型必须为list。
            if not isinstance(value,list):
                raise TypeError("输入类型不对!")
            self.__res=value                    #这时赋值给self.__sex。
        def append(self,value):                 #定义函数,判断输入的值类型是不是规定的。
            if not isinstance(value,self.type):
                raise TypeError("输入类型不对!")
            self.__res.append(value)            #加到列表中。
        @property
        def midtype(self):                      #这是查看中间值的属性,可以直接用了就。
            return self.res[int(len(self.__res)/2)]
        def __getattr__(self, item):            #在对象找不到将要调用的属性时,会触发这个函数的运行。
            return getattr(self.__res,item)     #return的是self.res即列表类型授权的方法。
        def __str__(self):                      #这是在打印a的时候,return的是一个字符串,而不是让人看不懂的对象内存地址。
            return "%s"%self.__res
    # a=List(str,[1,2,3])
    # print(a.type)
    # print(a.res)
    # print(a.midtype)
    # a.append("bbbbbbbbbb")
    # print(a)
    # a.insert(0,"aaaaaaaaaa")
    # print(a)
  • 相关阅读:
    面向对象
    6.jQuery基础_试题
    5.JavaScript操作BOM、DOM对象_试题
    css疑问
    JAVA学习笔记_五JAVA开发中的WEB前端技术
    java学习笔记_mysql随堂考试_错题
    java学习笔记④MySql数据库--03/04 DQL查询
    java学习笔记④MySql数据库--01/02 database table 数据的增删改
    java学习笔记③JAVA核心API编程-01集合框架和泛型
    java学习笔记②JAVA面向对象
  • 原文地址:https://www.cnblogs.com/chedanlangren/p/6759376.html
Copyright © 2011-2022 走看看