Ich habe eine Klasse, um die Config-Sachen meines Programms zu umhüllen. Aber wenn ich versuche ich so in ipython zu testen: Python: Kein Wert für Argument 'Dateinamen' in ungebundenen Methodenaufruf
c = Config(test.cfg)
bekomme ich den Fehler:
"TypeError: read() missing 1 required positional argument: 'filenames'
"
Aber ich Pylint diesen Fehler in meinem Emacs wirft:
"No value for argument 'filenames' in unbound method call"
Ich denke, der Fehler adbove ist der Grund des Fehlers darüber. Aber ich weiß nicht warum. Ich denke, die Methode ist Anruf gebunden, da ich selbst als Referenz verwendet, aber ich bin nicht sicher, und ich verstehe nicht, warum es cfg als Parameter nicht akzeptiert.
Das ist meine Klasse:
from configparser import ConfigParser
class Config:
"""Wrapper around config files
Args:
cfg: main config file
"""
def __init__(self, cfg=None):
self.cfg = []
self.cfgraw = cfg
self.scfgs = []
self.scfgs_raw = []
if not cfg is None:
self.add(typ="main", cfg=cfg)
def add(self, typ, cfg):
"""add config file
Args:
typ: type of file main or sub
Returns:
none
"""
if typ is not "main" and cfg is None:
raise ValueError('no file provied and type not main')
if typ is "sub":
for index in range(len(self.scfgs)):
self.scfgs[index] = ConfigParser
self.scfgs[index].read(cfg)
if typ is "main":
self.cfg = ConfigParser
self.cfg.read(cfg)
def write(self, typ=None, index=None):
"""write changes made
Args:
typ: type of target file
index: if type is sub add index to write selected file
Returns:
none
"""
if typ is "main":
self.cfg.write(self.cfgraw)
if typ is "sub":
if index is None:
for item in range(len(self.scfgs)):
self.scfgs[item].write(self.scfgs_raw[item])
else:
self.scfgs[item].write(self.scfgs_raw[item])