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 № 1Nun, 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):
# ....