带有预定义键的字典 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 默认字典以初始化实例。
我知道我可以用特定的键制作字典:
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 默认字典以初始化实例。