TypeError: module.__ init __() принимает не более 2 аргументов (3 данных)

Я определил класс в файле с именем 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

Что я делаю не так?

Ответ 1

Ваша ошибка происходит, потому что Object является модулем, а не классом. Таким образом, ваше наследство застенчиво.

Измените оператор импорта:

from Object import ClassName

и определение вашего класса:

class Visitor(ClassName):

или

измените определение своего класса на:

class Visitor(Object.ClassName):
   etc

Ответ 2

Вы также можете сделать следующее в Python 3.6.1

from Object import Object as Parent

и определение вашего класса:

class Visitor(Parent):

Ответ 3

Даже после ответа @Mickey Perlstein и его 3 часов детективной работы мне все еще потребовалось еще несколько минут, чтобы применить это в моем собственном беспорядке. В случае, если кто-то похож на меня и нуждается в дополнительной помощи, вот что происходило в моей ситуации.

  • Отзывы это модуль
  • Ответ является базовым классом в модуле ответов.
  • GeoJsonResponse - это новый класс, производный от Response

Начальный класс GeoJsonResponse:

from pyexample.responses import Response

class GeoJsonResponse(Response):

    def __init__(self, geo_json_data):

Выглядит хорошо. Никаких проблем, пока вы не попытаетесь отладить эту вещь, когда вы получаете кучу, казалось бы, расплывчатых сообщений об ошибках вроде этого:

из pyexample.responses импортировать GeoJsonResponse..\pyexample\response\GeoJsonResponse.py: 12: в (модуль) класс GeoJsonResponse (Response):

E TypeError: module() принимает не более 2 аргументов (дано 3)

=================================== ОШИБКИ ============== ======================

___________________ ОШИБКА, собирающая тесты /test_geojson.py ____________________

test_geojson.py:2: in (модуль) из pyexample.responses импортировать GeoJsonResponse..\pyexample\response\GeoJsonResponse.py: 12: in (модуль)

Класс GeoJsonResponse (Response): E TypeError: module() принимает не более 2 аргументов (3 дано)

ОШИБКА: не найдено:\PyExample\tests\test_geojson.py :: TestGeoJson :: test_api_response

C:.\Python37\Lib\сайт-пакеты\aenum__init __ пе: 163

(без имени 'PyExample\tests\test_geojson.py :: TestGeoJson :: test_api_response' в любом из [])

Ошибки делали все возможное, чтобы указать мне правильное направление, и ответ @Mickey Perlstein был мертв, мне потребовалась всего одна минута, чтобы собрать все это вместе в моем собственном контексте:

Я импортировал модуль:

from pyexample.responses import Response

когда я должен был импортировать класс:

from pyexample.responses.Response import Response

Надеюсь, это кому-нибудь поможет. (В мою защиту, это все еще довольно рано.)

Ответ 4

from Object import Object

или

From Class_Name import Class_name

Если объект представляет собой файл .py.