高渐飞 发表于 2018-7-18 20:54:39

A-22-定制容器

#

#知识点
"""
1. 容器的魔法方法:
__len__(self): 定义当被 len() 调用时的行为(返回容器中元素的个数)
__getitem__(self, key): 定义获取容器中指定元素的行为,相当于 self
__setitem__(self, key, value): 定义设置容器中指定元素的行为,相当于 self = value
__delitem__(self, key): 定义删除容器中指定元素的行为,相当于 del self
__iter__(self): 定义当迭代容器中的元素的行为
__reversed__(self): 定义当被 reversed() 调用时的行为
__contains__(self, item): 定义当使用成员测试运算符(in 或 not in)时的行为


2. Python 允许我们自己定制容器,如果你想要定制一个不可变的容器(String): 就不能定义像 __setitem__() 和 __delitem__() 这些会修改容器中的数据的方法。

3. 若要定制可变的容器, 则要加上__setitem__()和__delitem__()这两个方法"""

classCount(list):
    def__init__(self, *args):
      super().__init__(args)
      self.count =

    def__len__(self):
      super().__len__()

    def__getitem__(self, key):
      self.count += 1
      returnsuper().__getitem__(key)

    def__setitem__(self, key, value):
      self.count += 1
      super().__setitem__(key, value)

    def__delitem__(self, key):
      delself.count
      super().__delitem__(key)

    defreverse(self):
      self.count.reverse()
      super().reverse()

    defappend(self, value):
      self.count.append(0)
      super().append(value)

    defextend(self, values):
      forx in values:
            self.count.append(0)
      super().extend(values)

    definsert(self, index, value):
      self.count.insert(index, 0)
      super().insert(index, value)

    defpop(self, index = -1):
      del self.count
      return super().pop(index)

    defremove(self, value):
      key = self.index(value)
      del self.count
      super().remove(value)

    defclear(self):
      self.count.clear()
      super().clear()

    defcounter(self, key):
      return self.count
页: [1]
查看完整版本: A-22-定制容器