ich erweitere gerade das erste Mal eine Klasse der Standardbibliothek und scheitere schon ganz zu Beginn. Vorweg: ich benutze Python 3.4
Mein Code
Code: Alles auswählen
import shlex
class shlexfem(shlex):
def __init__(self, instream=None, infile=None, posix=False):
super().__init__(instream, infile, posix)
pass
Code: Alles auswählen
TypeError: module.__init__() takes at most 2 arguments (3 given)
Ich habe nur die __init__() der Klasse shlex gefunden, und will ja diese auch mit meiner Codezeile 4 aufrufen:
Code: Alles auswählen
class shlex:
"A lexical analyzer class for simple shell-like syntaxes."
def __init__(self, instream=None, infile=None, posix=False):
...
Ihr bemerkt, ich habe Verständnisprobleme: was macht ein Modul mit Argumenten, ich dachte, die Argumente kommen erst bei der __init__()-Methode ins Spiel?
Mir scheint, als ob ich den Unterschied zwischen Modul und Klasse noch nicht verstanden habe, denn in meinen kleinen Tests (zwei Klassen in einer Datei) stoße ich auf dieses Problem nicht, bzw. kann es nicht provozieren (z.B. mit zu vielen Argumenten, das ergibt eine etwas andere Fehlermeldung).
Weiß jemand, wo ich mich diesbezüglich schlau machen kann, ich habe für dieses Problem nichts gefunden?
Kurz fragen möchte ich noch was den Aufruf der __init__() der Basisklasse betrifft: Welche Schreibweise ist die "bessere", "pythonischere", oder ist eine falsch:
Code: Alles auswählen
super().__init__(instream, infile, posix)
# oder
shlex.__init__(self, instream, infile, posix)
Viele Grüße,
Ulrich