假设我有一个枚举变量:
我想创建一个
这个“pythonic way”实现
class Color(Enum):
RED = "RED"
GREEN = "GREEN"
BLUE = "BLUE"
我想创建一个
ColorDict
类,它可以像本地Python字典一样工作,但只接受Color
枚举或其相应的字符串值作为键。d = ColorDict() # I want to implement a ColorDict class such that ...
d[Color.RED] = 123
d["RED"] = 456 # I want this to override the previous value
d[Color.RED] # ==> 456
d["foo"] = 789 # I want this to produce an KeyError exception
这个“pythonic way”实现
ColorDict
类应该怎么做?我是使用继承(覆盖Python的本地dict
)还是组合(将一个dict
作为成员)?
__setitem__
、.update
,这可能很容易。 - juanpa.arrivillagacollections.abc.MutableMapping
,这将涉及组合,但您只需要实现最少量的方法即可。 - juanpa.arrivillagaKeyError
是一种查找错误(即找不到某个东西),但赋值操作并不是一种查找。我会考虑使用ValueError
来表示错误的键值,但说实话,我不确定哪一个更合适。 - VPfB