175

という名前のファイルにクラスを定義しました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

私は何を間違っていますか?

4

5 に答える 5

285

Objectはクラスではなくモジュールであるため、エラーが発生しています。だからあなたの相続は厄介です。

importステートメントを次のように変更します。

from Object import ClassName

そしてあなたのクラス定義は:

class Visitor(ClassName):

また

クラス定義を次のように変更します。

class Visitor(Object.ClassName):
   etc
于 2013-01-29T14:07:33.603 に答える
16

@Mickey Perlsteinの回答と彼の3時間の調査作業の後でも、これを自分の混乱に適用するのにさらに数分かかりました. 他の誰かが私のようなもので、もう少し助けが必要な場合に備えて、私の状況で何が起こっていたかを次に示します.

  • 応答はモジュールです
  • Response は、response モジュール内の基本クラスです。
  • GeoJsonResponse は Response から派生した新しいクラスです

最初の GeoJsonResponse クラス:

from pyexample.responses import Response

class GeoJsonResponse(Response):

    def __init__(self, geo_json_data):

良さそう。デバッグを試みるまで問題はありません。デバッグを試みると、次のような一見漠然としたエラー メッセージが大量に表示されます。

from pyexample.responses import GeoJsonResponse ..\pyexample\responses\GeoJsonResponse.py:12: (モジュール) クラス GeoJsonResponse(Response) 内:

E TypeError: module() は最大 2 つの引数を取ります (3 つ指定)

================================== エラー ============= ======================

___________________ テスト/test_geojson.py の収集中にエラーが発生しました ____________________

test_geojson.py:2: in (モジュール) from pyexample.responses import GeoJsonResponse ..\pyexample\responses \GeoJsonResponse.py:12: in (モジュール)

class 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

これが誰かに役立つことを願っています。(私の弁護では、それはまだかなり早いです。)

于 2019-04-12T11:16:02.747 に答える