Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:typing_self_reference
  • nur für Python < 3.10 (ab da ist es Standard-Verhalten)
  • 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.txt · Zuletzt geändert: 2022/04/11 15:46 von root