1062195630 发表于 2021-5-25 11:01:09

47节作业

本帖最后由 1062195630 于 2021-5-25 11:37 编辑

class CountList(list):
    def __init__(self, *args):
      super().__init__(args)
      self.count = []
      for i in args:
            self.count.append(0)

    def __len__(self):
      return len(self.count)

    def __getitem__(self, key):
      self.count += 1
      return super().__getitem__(key)

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

    def __delitem__(self, key):
      del self.count
      super().__delitem__(key)

    def counter(self, key):
      return self.count

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

    def pop(self, key=-1):
      del self.count
      return super().pop(key)

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

    def insert(self, key, value):
      self.count.insert(key, 0)
      super().insert(key, value)

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

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


定义inset函数那一部分self.count.insert(key, 0)又调用了insert,不会造成死循环吗


Twilight6 发表于 2021-5-25 12:15:50



因为这里的 self.count 被__init__初始化赋值为 [] 空列表

此时 self.count 相当于是属于 list 类的实例对象,而不是 CountList 类的实例

所以这里你调用 insert 是调用 list 的 insert 方法,不是自身调用自身,所以不会进入无限递归

1062195630 发表于 2021-5-27 16:00:22

Twilight6 发表于 2021-5-25 12:15
因为这里的 self.count 被__init__初始化赋值为 [] 空列表

此时 self.count 相当于是属于 list 类的 ...

谢谢
页: [1]
查看完整版本: 47节作业