ツールを開発しましたが、それを別のアプリケーションで使用したいと考えています。ここで、ツールを新しいアプリケーションにコピーするだけです。ファイルのアーキテクチャは次のとおりです。
.
├── inner
│ ├── a
│ │ ├── a.py
│ │ └── __init__.py
│ ├── b
│ │ ├── b.py
│ │ └── __init__.py
│ ├── __init__.py
│ └── inner.py
└── outer.py
a.py
class A(object):
def output(self):
print('A')
b.py
from a.a import A
class B(object):
def output(self, a):
print('B')
print(isinstance(a, A))
inner.py
from a.a import A
from b.b import B
a = A()
b = B()
a.output()
b.output(a)
B.output は、2 番目の引数 a がクラス A のインスタンスであるかどうかをチェックします。inner.py
フォルダーの下で実行するinner
と、出力が得られます。
A
B
True
outer.py
ただし、新しいアプリケーション フォルダーでほぼ同じコードを実行すると、出力が予期されません。
A
B
False
外側.py
import sys
sys.path.append('inner')
if __name__ == '__main__':
from inner.a.a import A
from inner.b.b import B
a = A()
b = B()
a.output()
b.output(a)
print(a)
outer.pyを追加すると<inner.a.a.A object at 0x7f45e179f2d0>
、 ではなくが得られa.a.A object
ます。
内部アプリケーションを統合しisinstance
て適切な結果を返す方法を教えてください。inner
の下にあるすべてのフォルダを に追加しますsys.path
か? もしそうなら、私はタイプ検出を削除することを選択します。