* 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)