/Project
|-- main.py
|--/lib
| |--__init__.py
| |--foo.py
| |--Types.py
/Project/lib
已被添加到PYTHONPATH
變量。isinstance失敗用於經由包進口類型,並從相同的模塊直接
Types.py:
class Custom(object):
def __init__(self):
a = 1
b = 2
foo.py:
from Types import Custom
def foo(o):
assert isinstance(o, Custom)
最後,從main.py:
from lib.Types import Custom
from lib.foo import foo
a = Custom()
foo(a)
問題ñ ow是,a
的類型是lib.foo.Custom
,而isinstance調用將檢查它是否等於foo.Custom
,這顯然返回false。
如何避免此問題,而不必更改庫(lib)中的任何內容?
無論導入路徑如何,類引用都將保持不變。我不認爲你應該在這裏面對任何問題。 – hspandher
您在'lib'目錄中缺少'__init __。py'。請參閱[這裏](https://stackoverflow.com/questions/46688216/in-python3-does-import-work-transitively/46688250#46688250) – uphill
+'types'是存在於標準庫中的名稱,我' d去換一個。 – uphill