Расширение класса configparser и использование синтаксического анализатора конфигурации в новом классе

Поэтому я пытаюсь создать класс, который будет уже прочитан в файле и будет иметь все функции configparser плюс еще несколько. Код выглядит так:

import configparser
class dkconfig(configparser):
    def __init__(self):
        self.clusterini = os.path.abspath("..\\cluster.ini")
        super(dkconfig,self).__init__(allow_no_value=True)
        if os.path.exists(self.clusterini):
            self.read(self.clusterini)


    def getHostnames(self):
        hostnames = {}
        for sec in self.config.sections():
            if sec.startswith("node"):
                hostnames[sec] = self.config.get(sec, "hostname")
        return hostnames

И это вызывается из другого скрипта так:

config = dkconfig()
names = config.getHostnames()
opts = config.options("node1")

Ошибка говорит: TypeError: module.__init__() takes at most 2 arguments (3 given) Чего мне не хватает, и как я могу иметь все экземпляры объекта "dkconfig", уже читающие файл "cluster.ini" во время создания?

1 ответ

Решение

Ну, непосредственной причиной ошибки является то, что вы пытаетесь унаследовать от configparser модуль. Вам нужно наследовать от класса, а не от модуля.

class dkconfig(configparser.ConfigParser):
    # ....
Другие вопросы по тегам