[python] 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

내가 뭘 잘못하고 있죠?



답변

Object클래스가 아닌 모듈 이기 때문에 오류가 발생 합니다. 그래서 당신의 상속은 까다 롭습니다.

수입 명세서를 다음과 같이 변경하십시오.

from Object import ClassName

클래스 정의 :

class Visitor(ClassName):

또는

클래스 정의를 다음과 같이 변경하십시오.

class Visitor(Object.ClassName):
   etc


답변

@Mickey Perlstein의 답변과 그의 3 시간의 탐정 작업 후에도 이것을 내 자신의 혼란에 적용하는 데 몇 분이 더 걸렸습니다. 다른 사람이 나와 같고 조금 더 도움이 필요한 경우 내 상황에서 무슨 일이 있었는지 여기에 있습니다.

  • 응답은 모듈입니다
  • 응답은 응답 모듈 내의 기본 클래스입니다
  • GeoJsonResponse는 Response에서 파생 된 새로운 클래스입니다.

초기 GeoJsonResponse 클래스 :

from pyexample.responses import Response

class GeoJsonResponse(Response):

    def __init__(self, geo_json_data):

좋아 보인다. 디버깅을 시도 할 때까지 아무런 문제가 없습니다. 다음과 같은 모호한 오류 메시지가 나타납니다.

pyexample.responses에서 가져 오기 GeoJsonResponse .. \ pyexample \ responses \ GeoJsonResponse.py : 12 : (모듈) 클래스 GeoJsonResponse (Response) :

E TypeError : module ()은 최대 2 개의 인수를받습니다 (3 개 제공)

=================================== 오류 =============== ======================

___________________ 테스트 /test_geojson.py 수집 오류 ____________________

pyexample.responses에서 test_geojson.py:2 : in (모듈) import GeoJsonResponse .. \ pyexample \ responses \ GeoJsonResponse.py : 12 : in (모듈)

GeoJsonResponse (Response) 클래스 : E TypeError : module ()은 최대 2 개의 인수를받습니다 (3 개 제공)

오류 : 찾을 수 없음 : \ PyExample \ tests \ test_geojson.py :: TestGeoJson :: test_api_response

C : \ Python37 \ lib \ site-packages \ aenum__init __. py : 163

([] 중 하나에 ‘PyExample \ tests \ test_geojson.py :: TestGeoJson :: test_api_response’없음)

오류는 올바른 방향으로 나를 지적하기 위해 최선을 다하고 있었고 @Mickey Perlstein의 대답은 끝났습니다. 내 상황에서 모든 것을 하나로 묶는 데 잠시 시간이 걸렸습니다.

모듈 을 가져오고있었습니다 .

from pyexample.responses import Response

클래스를 가져와야 할 때 :

from pyexample.responses.Response import Response

이것이 누군가를 돕기를 바랍니다. (내 방어에서는 여전히 초기 단계입니다.)


답변

Python 3.6.1에서 다음을 수행 할 수도 있습니다.

from Object import Object as Parent

클래스 정의 :

class Visitor(Parent):


답변

from Object import Object

또는

From Class_Name import Class_name

Object가 .py파일 인 경우


답변

문제가있는 경우 클래스를 확장하려고 할 때 모듈을 참조하고있었습니다.

import logging
class UserdefinedLogging(logging):

설명서 정보를 보면 “로깅”이 모듈로 표시됩니다.

이 특정 경우 로깅에 대한 추가 클래스를 작성하기 위해 로깅 모듈을 상속해야했습니다.


답변