Eu defini uma classe em um arquivo chamado Object.py
. Quando tento herdar dessa classe em outro arquivo, chamar o construtor lança uma exceção:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Este é o meu código:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
O que estou fazendo de errado?
Respostas:
Seu erro está acontecendo porque
Object
é um módulo, não uma classe. Portanto, sua herança é esquisita.Altere sua declaração de importação para:
e sua definição de classe para:
ou
altere sua definição de classe para:
fonte
ClassName
completamente? Gostaclass Visitor()
?Mesmo após a resposta de @Mickey Perlstein e suas 3 horas de trabalho de detetive, ainda levei mais alguns minutos para aplicar isso à minha própria bagunça. Caso alguém seja como eu e precise de um pouco mais de ajuda, eis o que estava acontecendo na minha situação.
Classe inicial GeoJsonResponse:
Parece bem. Sem problemas até você tentar depurar a coisa, que é quando você recebe um monte de mensagens de erro aparentemente vagas como esta:
Os erros estavam fazendo o possível para me apontar na direção certa, e a resposta de @Mickey Perlstein estava morta, levei apenas um minuto para reunir tudo no meu próprio contexto:
Eu estava importando o módulo :
quando eu deveria estar importando a classe :
Espero que isso ajude alguém. (Em minha defesa, ainda é muito cedo.)
fonte
Você também pode fazer o seguinte no Python 3.6.1
e sua definição de classe para:
fonte
ou
Se Object é um
.py
arquivo.fonte
No meu caso em que tive o problema, estava me referindo a um módulo quando tentei estender a classe.
Se você olhar as Informações da documentação, verá "log" exibido como módulo.
Nesse caso específico, tive que simplesmente herdar o módulo de log para criar uma classe extra para o log.
fonte