Typhinweise in Python ohne zyklische Importe
Typhinweise in Python bieten wertvolle Hilfe bei der Codevervollständigung und statischen Typprüfung. Allerdings treten aufgrund zyklischer Importe Probleme auf, wenn versucht wird, eine Klasse in mehrere Dateien aufzuteilen und gleichzeitig Typhinweise beizubehalten.
Ein Ansatz zur Lösung dieses Problems besteht darin, eine abstrakte Basisklasse (ABC) als Vermittler einzuführen. Dazu müssen sowohl die Hauptklasse als auch die Mixin-Datei geändert werden:
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>
Durch die Verwendung eines ABC stellen wir einen formellen Vertrag zwischen der Hauptklasse und dem Mixin her. Typhinweise können sich jetzt genau auf das ABC statt auf den tatsächlichen Klassennamen beziehen.
Für Python 3.7-Benutzer ist ein prägnanterer Ansatz mit PEP 563 möglich:
main.py:
<code class="python">from __future__ import annotations class Main: def func1(self, xxx): ...</code>
mymixin.py:
<code class="python">from __future__ import annotations class MyMixin: def func2(self, xxx): ...</code>
Mit diesen Techniken können Sie Ihre Klasse in mehrere Dateien aufteilen und gleichzeitig zyklische Importe verhindern und die Vorteile beibehalten des Typhinweises in Ihrem Code.
Das obige ist der detaillierte Inhalt vonWie löst man zyklische Importprobleme und nutzt Typhinweise in der Python-Klassenaufteilung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!