我想子类化dict并设置默认值

Ski*_*man 3 python dictionary subclass

我需要创建一个特殊的dict子类.在其中我想为一组键设置默认值.

我似乎没有找到正确的语法来做到这一点.

这是我一直在尝试的:

class NewDict(dict):
    Key1 = "stuff"
    Key2 = "Other stuff"
    NoList = []
    Nada = None
Run Code Online (Sandbox Code Playgroud)

然后我实例化一个像这样的对象:

PrefilledDict = NewDict()
Run Code Online (Sandbox Code Playgroud)

并试图在那里使用一些东西:

print PrefilledDict['Key1']
Run Code Online (Sandbox Code Playgroud)

但似乎我的字典不是字典.

我错过了什么?

bad*_*zil 9

你可以实现你想要的东西:

class NewDict(dict):

    def __init__(self):
        self['Key1'] = 'stuff'
        ...

PrefilledDict = NewDict()
print PrefilledDict['Key1']
Run Code Online (Sandbox Code Playgroud)

使用您的代码,您将创建NewDict类的属性,而不是字典中的键,这意味着您将访问这些属性:

PrefilledDict = NewDict()
print PrefilledDict.Key1
Run Code Online (Sandbox Code Playgroud)


Ale*_*gov 8

不需要子类化:

def predefined_dict(**kwargs):
    d = {
        'key1': 'stuff',
        ...
    }
    d.update(kwargs)
    return d

new_dict = predefined_dict()
print new_dict['key1']
Run Code Online (Sandbox Code Playgroud)

要不就:

defaults = {'a':1, 'b':2}
new_dict = defaults.copy()
print new_dict['a']
Run Code Online (Sandbox Code Playgroud)