讓我們這個__init__.py
在Python3包:爲什麼此導入相關的代碼在__init__.py中工作,但不在不同的.py文件中?
from .mod1 import *
from .mod2 import *
from .mod3 import *
__all__ = mod1.__all__ + mod2.__all__ + mod3.__all__
代碼看起來很簡單,做什麼預期:它進口模塊MOD1,MOD2和MOD3這些模塊已經投入了__all__
列表中的所有符號和那麼將創建所有三個__all__
列表的摘要。
我試着在模塊中運行非常相同的代碼,即不在__init__.py
中。它導入了三個模塊,但是mod1
,mod2
和mod3
是未定義的變量。
(順便說一句,如果你對原__init__.py
運行pylint的,你會得到這樣的錯誤了。)
相同的語句from .mod1 import *
當__init__.py
執行創建mod1
對象,但不會在其他地方創建它。爲什麼?
__init__.py
是一個特殊的文件,但直到現在,我還以爲只有它的名字是特殊的。
一個側面問題的位,但:你爲什麼這樣做呢? – jonrsharpe
@jonrsharpe我有一個邏輯電路模擬器,具有多個文件中定義的構建塊庫。我希望能夠簡單地添加一個帶有塊的新文件以添加到庫中。我發現了幾個食譜,現在我正在測試它們並學習。 – VPfB