我怎样才能使"完美"成为dict的子类?最终目标是有一个简单的字典,其中键是小写的.
似乎应该有一些微小的原语我可以覆盖以使这项工作,但根据我的所有研究和尝试似乎情况并非如此:
如果我覆盖__getitem__/__setitem__,则get/ set不起作用.我怎样才能让他们工作?当然我不需要单独实施它们?
我是否阻止酸洗工作,我是否需要实施__setstate__等?
我应该只使用mutablemapping(似乎不应该使用UserDict
或DictMixin)?如果是这样,怎么样?文档并不完全具有启发性.
这是我的第一次尝试,get()不起作用,毫无疑问还有许多其他小问题:
class arbitrary_dict(dict):
"""A dictionary that applies an arbitrary key-altering function
before accessing the keys."""
def __keytransform__(self, key):
return key
# Overridden methods. List from
# https://stackoverflow.com/questions/2390827/how-to-properly-subclass-dict
def __init__(self, *args, **kwargs):
self.update(*args, **kwargs)
# Note: I'm using dict directly, since super(dict, self) doesn't work. …Run Code Online (Sandbox Code Playgroud) 我想知道Python中是否存在一个本机数据类型,它的作用类似于固定长度的FIFO缓冲区.例如,我想创建一个使用全零初始化的长度为5的FIFO缓冲区.然后,它可能看起来像这样:
[0,0,0,0,0]
然后,当我在对象上调用put函数时,它将移出最后一个零并将新值(例如1)放入左侧:
[1,0,0,0,0]
如果我放一个2,它会转移并看起来像这样:
[2,1,0,0,0]
...等等.新值出现在前面,最旧值出现偏移.我知道这很容易实现自己,但我想尽可能使用本机python数据类型.有谁知道哪种数据类型最适合这个?