3

私は次のディレクトリ構造を持っています

ここに画像の説明を入力してください

RawRepoには単純なクラスが含まれています。

class RawRepo:
    pass

init .pyに含まれるもの:

__all__ = ["RawRepo"]

そして、私の「メインファイル」であるyap-analysis.pyは、次のいずれかを使用しますが、機能しません。

from yap import RawRepo
from yap import *

私がそれをインスタンス化しようとすると、次のようになります。

TypeError:'モジュール'オブジェクトは呼び出せません

それを実際に機能させる方法は?私yapはモジュールになりたい、そしてRawRepoそのクラスの1つになりたい。

4

5 に答える 5

1

にクラスをインポートしyap/init.pyます。

from .RawRepo import RawRepo

yap-analysis.py次に、次のようにインポートできます。

from yap import RawRepo

モジュールで複数のクラスをグループ化できることに注意してください。モジュールの名前をraw_repoのような名前に変更して PEP8 に準拠させることも検討する必要があります。

于 2012-12-11T16:36:39.407 に答える
0

重要なのは、Pythonコンパイラが.pyファイルをモジュールとして認識しているということです。

Pythonモジュールファイルとクラスの名前の両方にRawRepoという名前を付けました。このイディオムは基本的にJavaの世界から来ており、あまりPythonicではありません...

ファイルを変更して、モジュールの内容__init__をインポートできます。

于 2012-12-11T16:32:32.900 に答える
0

あなたが持っているインポートでは、クラスは呼び出されますRawRepo.RawRepo、ではありませんRawRepo(後者はモジュールです)。

于 2012-12-11T16:23:00.487 に答える
0

RawRepoモジュールです。RawRepo.RawRepoクラスであり、インスタンス化する必要があります。

于 2012-12-11T16:23:12.307 に答える
0

__init__.py

from RawRepo import *

それからyap-analysis.py

from yap import *

r = RawRepo()
于 2012-12-11T16:30:00.610 に答える