0
我開發了一個工具,我想在另一個應用程序中使用它。現在,我只需在新應用程序中複製我的工具。文件體系結構如下所示。isinstance使用嵌套的應用程序返回不正確的結果
.
├── 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將檢查第二個參數a是否是一個實例的A級。在摺疊下運行inner.py
呃inner
使輸出
A
B
True
然而,當我在我的新的應用程序文件夾運行幾乎相同的代碼outer.py
,預計不會輸出。
A
B
False
outer.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)
當我在outer.py添加print(a)
,我得到<inner.a.a.A object at 0x7f45e179f2d0>
,不a.a.A object
。
我想知道,如何整合內部應用程序以使isinstance
返回正確的結果?我應該將inner
下的所有文件夾添加到sys.path
?如果是這樣,我會選擇刪除類型檢測。
一個我以前從未知道的好主意!但是,我必須用'from inner.a.a import A'來更改'inner/b/b.py'的第一行以運行'inner.py'。它是唯一一種在開始時指定工具名稱的唯一方法嗎? –
@AnttiHaapala這聽起來很有趣;你能分享一個例子嗎?我試圖更好地理解你的建議 – Vinny