Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:typing_self_reference

Dies ist eine alte Version des Dokuments!


  • Ein Klasse gibt für einen Parameter oder einen Rückgabewert sich selbst als Typ an
  • das resultiert in
     NameError: name 'xyz' is not defined
  • Grund: Der Typ existiert zum Zeitpunkt des parsens der Type-Hints noch nicht

class MyTestClass():

    @classmethod
    def factory() -> MyTestClass:
        return MyTestclass()

  • MyTestClass wird als Rückgabewert-Typ der factory-Methode angegeben
  • zum Zeitpunkt wo der Typ evaluiert wird existiert MyTestClass aber noch nicht, da der Code der Klasse ja gerade erst geparst wird

from __future__ import annotations

class MyTestClass():

    @classmethod
    def factory() -> MyTestClass:
        return MyTestclass()

  • annotiations aus dem Future-Paktet sorgt dafür das die Typen erst nach laden des gesamten Moduls überprüft werden (also ob sie existieren)
python/typing_self_reference.1649683005.txt.gz · Zuletzt geändert: 2022/04/11 15:16 von root