我打算使用Python 函数注释来指定静态工厂方法的返回值的类型。我知道这是注释的理想用例之一。
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
or int
)或标准库类型(例如collections.deque
),则不会发生此错误。
是什么导致了这个错误,我该如何解决?