Я определил класс в файле с именем Object.py
. Когда я пытаюсь наследовать от этого класса в другом файле, вызов конструктора вызывает исключение:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Это мой код:
import Object
class Visitor(Object):
pass
instance = Visitor() # this line throws the exception
Что я делаю не так?
Ответы:
Ваша ошибка происходит потому, что
Object
это модуль, а не класс. Значит, твое наследство пошло не так.Измените свое заявление на импорт на:
и ваше определение класса:
или
измените определение своего класса на:
источник
ClassName
полностью пропустить ? Какclass Visitor()
?Даже после ответа @Mickey Perlstein и его 3 часов детективной работы, мне все еще потребовалось еще несколько минут, чтобы применить это в моем собственном беспорядке. Если кто-то похож на меня и нуждается в дополнительной помощи, вот что происходит в моей ситуации.
Начальный класс GeoJsonResponse:
Выглядит хорошо. Нет проблем, пока вы не попытаетесь отладить эту вещь, когда вы получаете кучу, казалось бы, расплывчатых сообщений об ошибках вроде этого:
Ошибки делали все возможное, чтобы указать мне правильное направление, и ответ @Mickey Perlstein был мертв, мне потребовалась только минута, чтобы собрать все это вместе в моем собственном контексте:
Я импортировал модуль :
когда я должен был импортировать класс :
Надеюсь, это кому-нибудь поможет. (В мою защиту, это все еще довольно рано.)
источник
Вы также можете сделать следующее в Python 3.6.1
и ваше определение класса:
источник
или
Если объект является
.py
файлом.источник
В моем случае, когда у меня возникла проблема, я обращался к модулю, когда пытался расширить класс.
Если вы посмотрите на документацию Info, вы увидите «logging», отображаемый как модуль.
В этом конкретном случае мне пришлось просто унаследовать модуль ведения журнала, чтобы создать дополнительный класс для ведения журнала.
источник