Я собирался использовать аннотации функций Python, чтобы указать тип возвращаемого значения статического метода factory. Я понимаю, что это один из желаемых вариантов использования для аннотаций.
class Trie:
@staticmethod
def from_mapping(mapping) -> Trie:
# docstrings and initialization ommitted
trie = Trie()
return trie
PEP 3107 утверждает, что:
Аннотации функций - это не что иное, как способ сопоставления произвольных выражений Python с различными частями функции во время компиляции.
Trie
является допустимым выражением в Python, не так ли? Python не согласен или, скорее, не может найти имя:
def from_mapping(mapping) -> Trie:
NameError: name 'Trie' is not defined
Стоит отметить, что эта ошибка не возникает, если указан базовый тип (например, object
или int
) или стандартный тип библиотеки (например, collections.deque
).
Что вызывает эту ошибку и как ее исправить?