Heim  >  Artikel  >  Backend-Entwicklung  >  Wie löst man zyklische Importprobleme und nutzt Typhinweise in der Python-Klassenaufteilung?

Wie löst man zyklische Importprobleme und nutzt Typhinweise in der Python-Klassenaufteilung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-23 12:53:30573Durchsuche

How to Resolve Cyclic Import Issues and Utilize Type Hints in Python Class Split?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn