0

ツールを開発しましたが、それを別のアプリケーションで使用したいと考えています。ここで、ツールを新しいアプリケーションにコピーするだけです。ファイルのアーキテクチャは次のとおりです。

.
├── 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か? もしそうなら、私はタイプ検出を削除することを選択します。

4

1 に答える 1