簡體   English   中英

向ConfigParser的__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM