J'ai défini une classe dans un fichier nommé Object.py
. Lorsque j'essaie d'hériter de cette classe dans un autre fichier, l'appel du constructeur lève une exception:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Voici mon code:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
Qu'est-ce que je fais mal?
Réponses:
Votre erreur se produit parce que
Object
c'est un module, pas une classe. Donc, votre héritage est foutu.Modifiez votre déclaration d'importation en:
et votre définition de classe pour:
ou
changez votre définition de classe en:
la source
ClassName
complètement? Commeclass Visitor()
?Même après la réponse de @Mickey Perlstein et ses 3 heures de travail de détective, il m'a fallu encore quelques minutes pour appliquer cela à mon propre désordre. Au cas où quelqu'un d'autre serait comme moi et aurait besoin d'un peu plus d'aide, voici ce qui se passait dans ma situation.
Classe GeoJsonResponse initiale:
Semble bien. Aucun problème jusqu'à ce que vous essayiez de déboguer le problème, c'est-à-dire lorsque vous obtenez un tas de messages d'erreur apparemment vagues comme celui-ci:
Les erreurs faisaient de leur mieux pour me diriger dans la bonne direction, et la réponse de @Mickey Perlstein était morte, il ne m'a fallu qu'une minute pour tout mettre en place dans mon propre contexte:
J'importais le module :
quand j'aurais dû importer la classe :
J'espère que cela aide quelqu'un. (Pour ma défense, il est encore assez tôt.)
la source
Vous pouvez également effectuer les opérations suivantes dans Python 3.6.1
et votre définition de classe pour:
la source
ou
Si Object est un
.py
fichier.la source
Dans mon cas où j'ai eu le problème, je faisais référence à un module lorsque j'ai essayé d'étendre la classe.
Si vous regardez les informations sur la documentation, vous verrez «journalisation» affiché en tant que module.
Dans ce cas précis, je devais simplement hériter du module de journalisation pour créer une classe supplémentaire pour la journalisation.
la source