![](/img/trans.png)
[英]passing a configparser.ConfigParser() object via __init__?
[英]Adding arguments to __init__ of ConfigParser
我想通过继承自SafeConfigParser扩展一些功能:
class ExtendedConfigParser(SafeConfigParser):
def __init__(self, *args, **kwargs):
SafeConfigParser.__init__(self, *args, **kwargs)
..但是SafeConfigParser的init有问题:
SafeConfigParser.__init__(self, *args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'config_file'
我可以通过从kwargs中删除添加的kw参数来解决该问题,但是我想知道是否有更优雅的解决方案? (注意:SafeConfigParser似乎是一个老式的类)。
我假设您是从Python的SafeConfigParser
继承而来的,您正在尝试实例化ExtendedConfigParser
如下所示:
cfg_parser = ExtendedConfigParser(config_file='my_file.cfg')
如果是这种情况,则SafeConfigParser
不会有任何名为config_file
关键字参数,而这正是错误的来源。
python中的函数声明允许您指定参数,关键字参数,然后通过*args
和**kwargs
允许未指定的参数和关键字参数 。 我假设你想访问config_file
只在ExtendedConfigParser
而不是在SafeConfigParser
。
您需要做的就是在ExtendedConfigParser
更改__init__
参数:
class ExtendedConfigParser(SafeConfigParser):
def __init__(config_file='', *args, **kwargs):
self.config_file = config_file
SafeConfigParser.__init__(self, *args, **kwargs)
这使您可以为ExtendedConfigParser
指定任何所需的参数,然后将所有其他参数传递给SafeConfigParser
的构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.