Python 中的類型提示,無需循環導入
問題:
拆分大類別時到多個文件中,循環導入可能會阻止類型提示正常工作。具體來說,在 mixin 類別中匯入「主」類別會產生循環依賴,從而阻礙類型檢查。
解:
對於Python 3.4:
使用以下程式碼結構:
<code class="python"># main.py import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... # mymixin.py from typing import TYPE_CHECKING if TYPE_CHECKING: from main import Main class MyMixin(object): def func2(self: 'Main', xxx): # Note the string type hint ...</code>
對於Python 3.7 :
Python 3.7 引入了一個更優雅的解決方案:# main.py
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
# mymixin.py
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from main import Main
class MyMixin(object):
def func2(self: Main, xxx): # No need for a string type hint
...<p><strong>其他注意事項:</strong></p>
<p><strong>Mypy 可能需要建立 Main 和 MyMixin 繼承的抽象基底類別 (ABC),以確保正確的類型檢查。 </strong></p>PyCharm 的檢查器可能也需要類似的方法來實現最大相容性。 <ul><li></ul>
以上是如何避免 Python 類型提示中的循環導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!