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

Mary-Kate Olsen
Freigeben: 2024-10-23 12:53:30
Original
512 Leute haben es durchsucht

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>
Nach dem Login kopieren

mymixin.py:

<code class="python">import abc

class MyMixinABC(abc.ABC):
    def func2(self: 'MyMixinABC', xxx):
        ...</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

mymixin.py:

<code class="python">from __future__ import annotations

class MyMixin:
    def func2(self, xxx):
        ...</code>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!