Ведёт себя так же, как TypeVar, но более краток и прост:
Допустим, мы создали метод get_scale(), который возвращает экземпляр того же класса Scale с помощью self:
class Shape: def set_scale(self, scale: float): self.scale = scale return selfShape().set_scale(0.5) # => Экземпляр класса ShapeОдин из способов обозначить тип возвращаемого значения — указать его как текущий класс Shape. Использование этого метода заставляет средство проверки типов выводить тип Shape, как и ожидалось:
class Shape: def set_scale(self, scale: float) -> Shape: self.scale = scale return selfShape().set_scale(0.5) # => Shape ...PEP-673
#pep