zoukankan      html  css  js  c++  java
  • 定制序列

      协议(Protocols) 与其他编程语言中的接口很相似 , 他规定你哪些方法必须要定义. 然而在Python中的协议就显得不是那么的正式 . 事实上 , 在Python 中协议更像是一种指南 .

      如果你希望自己定制的容器是不可变的话 , 你只需要定义 __len__()和__getitem__() 方法. (定义长度和 取出就行)

      如果希望定制的容器是可变的话,你就需要再定义__setitem__()和__delitem__(两种方法.)

     1 # 定制一个不可改变的列表 并且记录每个元素的访问次数 .
     2 class CountList:
     3     def __init__(sef,*args): # 参数的数量可变.
     4         self.values=[x for x in args]   # 列表推导式
     5         self.count={}.fromkeys(range(len(self.values)),0)
     6 
     7     def __len__(self):
     8         return len(self.values)
     9 
    10     def __getitem__(self,key):
    11         self.count[key]+=1
    12         return self.values[key]
    13 
    14 # 很巧妙的办法. 至少对于现在的我 看看这个收获还是可以的.
    15 
    16 # 类中有两个属性 一个是 value(列表) 一个是count(集合)
    17 
    18 # 当调用类 的时候的顺序 进入value , 并且这些元素的顺序符号进入count 并且打上 0的标记
    19 
    20 # 如果需要长度的话  就看value的长度就行
    21 
    22 # 如果需要元素的话  传入序号就行 , 传入序号的时候 将集合中该序号对应的 值 +1
     1 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
     2 >>> c1=CountList(1,3,5,7,9)
     3 >>> c2=CountList(2,4,6,8,10)
     4 >>> c1
     5 <__main__.CountList object at 0x02EA99F0>
     6 >>> c1[1]
     7 3
     8 >>> c1.values
     9 [1, 3, 5, 7, 9]
    10 >>> c1.count
    11 {0: 0, 1: 1, 2: 0, 3: 0, 4: 0}
    12 >>> c1[1]
    13 3
    14 >>> c1[1]
    15 3
    16 >>> c1.count
    17 {0: 0, 1: 3, 2: 0, 3: 0, 4: 0}
    18 >>> 
  • 相关阅读:
    1022.游船出租
    1021.统计字符
    1020.最小长方形
    1017.还是畅通工程
    1019.简单计算器
    1015.还是A+B
    1014.排名
    1013.开门人和关门人
    1011.最大连续子序列
    1009.二叉搜索树
  • 原文地址:https://www.cnblogs.com/A-FM/p/5682962.html
Copyright © 2011-2022 走看看