zoukankan      html  css  js  c++  java
  • python(29)- 面向对象练习Ⅲ

    题目:

      基于授权定制自己的列表类型,要求定制的自己的__init__方法,
        定制自己的append:只能向列表加入字符串类型的值
          定制显示列表中间那个值的属性(提示:property)
          其余方法都使用list默认的(提示:__getattr__加反射)

    class List:
        def __init__(self,x):
            self.seq=x  #self.seq=[l,2,3]
    
        def append(self,item):
            if not isinstance(item,str):
                raise TypeError("must be str")
            self.seq.append(item)   #此时self为类List实例化后f 传值给self,self.seq为调用__init__下的self.seq=[l,2,3],故表达式为[1,2,3].append(item)
    
        @property
        def mid(self):
            index=len(self.seq)//2
            return self.seq[index]     #此时self为类List实例化后f 传值给self,self.seq为调用__init__下的self.seq=[l,2,3],故表达式为[1,2,3][index]
    
        def __getattr__(self, item):    #f.insert(0,111111),此时f 赋值给self,insert(0,111111)赋值给item;f.pop(1),此时f 赋值给self,pop(1)赋值给item
            print("你所查找的属性未定义")
            return getattr(self.seq, item)
    
    
    x=[1,2,3]
    f=List(x)
    f.append("4")
    print(f.seq)    #等同于print(x)
    --->[1, 2, 3, '4']
    
    print(f.mid)
    --->3
    
    f.insert(0,111111)
    print(f.seq)
    --->[111111, 1, 2, 3, '4']
    
    f.pop(1)
    print(f.seq)
    --->[111111, 2, 3, '4']
    

      

  • 相关阅读:
    CSS的学习
    nodejs
    eureka注册中心
    netty的机制
    分布式事务
    spring cloud的基础
    一个发散动画的菜单控件(主要记录控件x,y坐标的运动状况)
    关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)
    ViewPager的使用总结
    Android实现沉浸式状态栏(必须高逼格)
  • 原文地址:https://www.cnblogs.com/xuyaping/p/6763434.html
Copyright © 2011-2022 走看看