Во-первых, давайте запустим другой пример:
signature: inspect.Signature = inspect.signature(Example)
print(signature)
print(Example.__annotations__)
Это напечатает:
(a: str)
OrderedDict([('a', <class 'str'>)])
Пока все хорошо, у нас есть или Signature
и наши __anotations__
, как мыожидается.
Теперь давайте сделаем то же самое для второго примера, он напечатает:
(a: 'str')
OrderedDict([('a', ForwardRef('str'))])
То есть вы не получите то же самое Signature
здесь.Один дает вам реальный класс, а другой - typing.ForwardRef
классу.