• 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)
  • 相关阅读:
    设计权限管理系统(十一)
    设计权限管理系统(十)
    设计权限管理系统(九)
    设计权限管理系统(八)
    设计权限管理系统(七)
    设计权限管理系统(六)
    设计权限管理系统(五)
    设计权限管理系统(四)
    设计权限管理系统(三)
    Dom的深度优先遍历和广度优先遍历
  • 原文地址:https://www.cnblogs.com/DragonFire/p/6758114.html
Copyright © 2020-2023  润新知