Ich habe eine Klasse in einer Datei mit dem Namen definiert Object.py
. Wenn ich versuche, von dieser Klasse in einer anderen Datei zu erben, löst der Aufruf des Konstruktors eine Ausnahme aus:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Das ist mein Code:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
Was mache ich falsch?
Antworten:
Ihr Fehler tritt auf, weil
Object
es sich um ein Modul handelt, nicht um eine Klasse. Ihr Erbe ist also verrückt.Ändern Sie Ihre Importanweisung in:
und Ihre Klassendefinition zu:
oder
Ändern Sie Ihre Klassendefinition in:
quelle
ClassName
ganz weglässt ? Wieclass Visitor()
?Selbst nach @Mickey Perlsteins Antwort und seiner 3-stündigen Detektivarbeit brauchte ich noch ein paar Minuten, um dies auf mein eigenes Durcheinander anzuwenden. Falls jemand wie ich ist und etwas mehr Hilfe benötigt, ist hier, was in meiner Situation vor sich ging.
Anfängliche GeoJsonResponse-Klasse:
Sieht gut aus. Keine Probleme, bis Sie versuchen, das Ding zu debuggen. Dann erhalten Sie eine Reihe von scheinbar vagen Fehlermeldungen wie diese:
Die Fehler haben ihr Bestes getan, um mich in die richtige Richtung zu weisen, und @Mickey Perlsteins Antwort war tot. Ich brauchte nur eine Minute, um alles in meinem eigenen Kontext zusammenzustellen:
Ich habe das Modul importiert :
wann ich die Klasse hätte importieren sollen :
Hoffe das hilft jemandem. (Zu meiner Verteidigung ist es noch ziemlich früh.)
quelle
Sie können in Python 3.6.1 auch Folgendes tun
und Ihre Klassendefinition zu:
quelle
oder
Wenn Objekt eine
.py
Datei ist.quelle
In meinem Fall, in dem ich das Problem hatte, bezog ich mich auf ein Modul, als ich versuchte, die Klasse zu erweitern.
Wenn Sie sich die Dokumentationsinformationen ansehen, wird "Protokollierung" als Modul angezeigt.
In diesem speziellen Fall musste ich einfach das Protokollierungsmodul erben, um eine zusätzliche Klasse für die Protokollierung zu erstellen.
quelle