/ / Die configparser-Klasse erweitern und einen config-Parser in einer neuen Klasse verwenden - python, class, python-3.x, configparser

Erweitern der configparser-Klasse und Verwenden eines config-Parsers in der neuen Klasse - python, class, python-3.x, configparser

Ich versuche also, eine Klasse zu erstellen, die die Datei bereits gelesen hat und über alle Funktionen von configparser sowie einige weitere verfügt. Code sieht so aus:

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

Und es wird von einem anderen Skript wie folgt aufgerufen:

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

Der Fehler sagt: TypeError: module.__init__() takes at most 2 arguments (3 given) Was fehlt mir und wie kann ich bei allen Instanzen des Objekts "dkconfig" die Datei "cluster.ini" bereits während der Erstellung einlesen lassen?

Antworten:

3 für die Antwort № 1

Nun, die unmittelbare Ursache des Fehlers ist, dass Sie versuchen, von der zu erben configparser Modul. Sie müssen von der erben Klasse, nicht das Modul.

class dkconfig(configparser.ConfigParser):
# ....