具有自定义Dict类型的ConfigParser

2024-06-16 09:18:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个定制的ConfigParser,它添加了一些特性,其中最相关的是,包括一个默认值,用于None的未设置键。这似乎通过自定义dict类型得到支持,因此我写了如下内容:

class SyncDict(collections.UserDict):
  ...
  def __getitem__(self, key):
    if key in self.data:
      return self.data[key]
    return None
  ...

class SyncConfig(ConfigParser):
  ...
  def __init__(self, filename):
    super().__init__(allow_no_value=True, dict_type = SyncDict)
  ...

但是,这不起作用,因为它仍然在SectionProxy中引发KeyError。比如说,

>>> a = SyncConfig('aaa.cfg')
>>> a.add_section('b')
>>> b = a['b']
>>> b['c']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python38\lib\configparser.py", line 1254, in __getitem__
    raise KeyError(key)
KeyError: 'c'

是我遗漏了什么,还是这真的不可能

PS:当要求一个区段时,使SyncDict返回一个空SyncDict值,而当要求一个选项时,使SyncDict返回一个空SyncDict值的方法可获得额外积分


Tags: keyinselfnonedatareturninitdef