モジュールを作成しようとしていますが、何か間違っているのではないかと心配しています。名前空間でいくつかの問題が発生しています。私が持っているものとよく似た例を作成しました。コメントによると、ファイル名が付いた3つのファイルがあります。
# $PYTHON_PATH/a/b.py
class X:
pass
def make_x():
return X()
そして私は初期化ファイルを持っています
# $PYTHON_PATH/a/__init__.py
from b import make_x
それから私はファイルを持っています
# $PYTHON_PATH/a/c.py
from b import X
x = X()
# For testing
if __name__ == "__main__":
from a import *
y = make_x()
print x.__class__
print y.__class__
print isinstance(x,X)
print isinstance(y,X)
実行時の出力c.py
b.X
a.b.X
True
False
おそらく、これはモジュール内からモジュールをインポートする際の問題であり、この種のハッキーな方法でテストしていないときは解消されます ( from a import *
)。これは本当ですか、それとも私が全体をどのように構築しているかに何か問題がありますか.