Python 中的類型提示(無需循環導入)
Python 中的類型提示為完成和靜態類型檢查提供了寶貴的幫助。然而,當嘗試將一個類別拆分為多個文件,同時由於循環導入而維護類型提示時,就會出現問題。
解決此問題的一種方法是引入抽象基類 (ABC) 作為中介。這需要修改主類別和mixin 檔案:
main.py:
<code class="python">from abc import ABC from mymixin import MyMixinABC class Main(MyMixinABC): def func1(self, xxx): ...</code>
mymixin.py:
<code class="python">import abc class MyMixinABC(abc.ABC): def func2(self: 'MyMixinABC', xxx): ...</code>
mymixin.py:
透過使用ABC,我們在主類別和mixin 之間建立了正式的契約。類型提示現在可以準確地引用 ABC 而不是實際的類別名稱。
對於Python 3.7 用戶,可以使用PEP 563 實現更簡潔的方法:<code class="python">from __future__ import annotations class Main: def func1(self, xxx): ...</code>
main.py:
<code class="python">from __future__ import annotations class MyMixin: def func2(self, xxx): ...</code>
以上是如何解決 Python 類別拆分中的循環導入問題並利用類型提示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!