首頁  >  文章  >  後端開發  >  如何避免 Python 類型提示中的循環導入?

如何避免 Python 類型提示中的循環導入?

Linda Hamilton
Linda Hamilton原創
2024-10-23 13:34:02203瀏覽

How to Avoid Cyclic Imports in Python's Type Hinting?

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>
>TYPE_CHECKING 常數確保main.py 的導入僅在類型檢查期間進行評估,避免循環導入錯誤。

對於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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn