Heim  >  Artikel  >  Backend-Entwicklung  >  Wie pflege ich Typhinweise in Python mit zyklischen Importen?

Wie pflege ich Typhinweise in Python mit zyklischen Importen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-23 13:04:01745Durchsuche

How to Maintain Type Hints in Python with Cyclic Imports?

Typhinweise in Python mit zyklischen Importen pflegen

Bei der Arbeit mit großen Python-Klassen kann es von Vorteil sein, diese zur besseren Organisation und Wartbarkeit in mehrere Dateien aufzuteilen. Dies zu erreichen und dabei Typhinweise beizubehalten, kann jedoch aufgrund möglicher zyklischer Importe eine Herausforderung darstellen.

Ein Ansatz besteht darin, Typanmerkungen in der Mixin-Klasse zu verwenden, die auf die Hauptklasse verweisen. Dies kann jedoch zu zirkulären Importen führen, die in Python nicht zulässig sind.

Um dieses Problem zu umgehen, können mehrere Lösungen eingesetzt werden:

  • Codeblöcke schützen mit 'TYPE_CHECKING':

    • Schließen Sie den typannotierten Code in der Mixin-Klasse in eine if-Anweisung ein, die die Konstante 'TYPE_CHECKING' überprüft.
    • Diese Konstante ist auf gesetzt True während der Typprüfung (z. B. durch Tools wie mypy), aber zur Laufzeit ist False, wodurch der Import effektiv deaktiviert wird, der andernfalls die zirkuläre Abhängigkeit verursachen würde.
    • Dies erfordert jedoch die explizite Annotation des Typhinweises als Zeichenfolge, z Symbole sind zur Laufzeit nicht verfügbar.
  • Verwenden Sie Forward-Deklarationen mit „aus zukünftigen Annotationen importieren“:

    • In Python 3.7 ermöglicht dieser Import die Darstellung aller Typanmerkungen als Zeichenfolgen, wodurch die Notwendigkeit expliziter Zeichenfolgenanmerkungen entfällt und die Lesbarkeit verbessert wird.
    • Beachten Sie, dass alle Typhinweise zu Zeichenfolgen werden und zur Laufzeit nicht ausgewertet werden , was sich möglicherweise auf das Codeverhalten auswirkt.
  • Erwägen Sie einen ABC-Ansatz (Abstract Base Class):

    • Mypy empfiehlt die Erstellung eines ABC, von dem sowohl die Hauptklasse als auch das Mixin erben.
    • Dieser Ansatz eignet sich möglicherweise besser für größere Projekte, bei denen Codestruktur und Wartbarkeit von größter Bedeutung sind.

Das obige ist der detaillierte Inhalt vonWie pflege ich Typhinweise in Python mit zyklischen Importen?. 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