【发布时间】:2021-10-08 03:28:55
【问题描述】:
我遇到过很多次问题,解决方案通常是循环列表。例如:
my_list = CircularList([1,2,3,4])
my_list[0] # 1
my_list[4] # 1
为了实现这样的结构,我这样做了:
class CircularList(list):
def __getitem__(self, index: int):
return list.__getitem__(self, index % len(self))
在实现该类之后,我想创建一个可以“Circularize”实现__getitem__ 和__len___ 的任何可迭代对象的单个类,同时仍保留该对象的所有属性和方法.
比如:
circ_iter = Circular(MyIter(1,2,3,4)) # Object keeps MyIters's attributes
circ_tuple = Ciruclar((1,2,3,4)) # Still has attributes of a tuple
我遇到的问题是我找不到根据参数类型为每个实例动态设置基类的方法。
我该怎么做呢?
【问题讨论】:
-
纯粹出于好奇——与
collections.deque相比,什么用例需要这个? -
@TeejayBruno 我正在寻找支持这种代码的东西:
deq = deque([1,2,3,4])print(deq[4])`deque在这种情况下会引发错误。
标签: python python-3.x list inheritance iterable