带有预定义键的字典 class

Dictionary class with predefined keys

我知道我可以用特定的键制作字典:

my_dict = dict.fromkeys(my_keys)

而且我知道我可以继承字典 class:

class My_Dict_Class(dict):
    ...

但我怎样才能将两者结合起来呢?我想制作一本字典 class 并且我已经知道它将拥有的所有键。我知道我可以在我的 class 中设置一些键,但如果我可以这样做岂不是更好更快:

class My_Dict_Class(dict.fromkeys(my_keys)):
    ...

我想这样做的原因是我听说 fromkeys 比循环和设置键 in this question.

快得多

MWE:

  my_keys = [1,2,3]
  my_dict = dict.fromkeys(my_keys)

  class My_Dict_Class(dict):
      def my_functions(self):
          return

  class My_Dict_Class(dict.fromkeys(my_keys)):
      def my_functions(self):
          return

Traceback (most recent call last):
  File "dummy.py", line 8, in <module>
    class My_Dict_Class(dict.fromkeys(my_keys)):
TypeError: Error when calling the metaclass bases
    dict expected at most 1 arguments, got 3

Python classes 继承自其他 classes,而不是 class 实例。如果您的目标是为每个实例快速初始化字典的内容,那么复制现有字典比您可以做的任何其他事情都要快。例如,您可以定义:

class MyDict(dict):
    _DEFAULT_CONTENTS = dict.fromkeys((1, 2, 3))
    def __init__(self):
        super(MyDict, self).__init__(self._DEFAULT_CONTENTS)

这将(浅)复制现有的 class 默认字典以初始化实例。