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