zoukankan      html  css  js  c++  java
  • Python练习-基于授权方式包装list之与根儿哥必有一战

     1 # 编辑者:闫龙
     2 # 基于授权定制自己的列表类型,要求定制的自己的__init__方法,
     3 # 定制自己的append:只能向列表加入字符串类型的值
     4 # 定制显示列表中间那个值的属性(提示:property)
     5 # 其余方法都使用list默认的(提示:__getattr__加反射)
     6 class MyList:
     7     def __init__(self,*args):#自定义__init__函数
     8         self.list = list(args)#*args会将多个值变为元组,咱们在这里把它再变成列表传递给self.list
     9     def __str__(self):#自定义__str__函数
    10         return str(self.list)#每次print 的时候显示列表
    11     def append(self,x):#自定义append方法
    12         if(isinstance(x,str)):#判断将要传入列表的值是否为字符串
    13             self.list.append(x)
    14             print(x, "已被添加到MyList中")
    15         else:
    16             raise TypeError("只可以传入字符串")#主动抛出类型错误异常
    17     def __getattr__(self, item):#当在MyList中未找到传入的name时调用此方法
    18         return getattr(self.list,item)#其他未实现的方法,使用list自身的方法
    19     @property
    20     def whoiscenter(self):#根儿哥这个文化底蕴啊,真是要了亲命了,半天没看懂
    21         #定制显示列表中间那个值的属性(提示:property)
    22         #你TMD就不会个断句吗?来,哥教你:指定,显示列表中间值,的属性(使用property实现)
    23         return self.list[len(self.list)//2]
    24 
    25 ml = MyList(1,2,3)
    26 ml.append("4")
    27 ml.pop(0)#验证__getattr__是否成功
    28 print(ml)
  • 相关阅读:
    理解和驾驭软件开发的那些事儿
    Dubbo 泛化调用的参数解析问题及一个强大的参数解析工具 PojoUtils
    HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查
    阅读的收获
    碎碎念集萃二十
    《深度工作》学习笔记
    系统思考学习笔记
    思考力笔记
    碎碎念集萃十九
    设计方案考量的准则与细则
  • 原文地址:https://www.cnblogs.com/DragonFire/p/6758114.html
Copyright © 2011-2022 走看看