![](/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.