繁体   English   中英

class 方法返回错误的类型提示 - 名称未定义?

[英]Type hint for class method return error - name is not defined?

下面的 class 有一个 class 方法create() ,它作为返回类型的类型提示,用于创建 class 的实例。

class X:
   @classmethod
   def create(cls) -> X:
     pass

但是,它得到了以下错误?

NameError:名称“X”未定义

在完全定义 class 之前,名称X不存在。 您可以通过导入名为annotations__future__功能来解决此问题。 只需将其放在文件的顶部即可。

from __future__ import annotations

这会将所有注释用引号括起来,以抑制这样的错误。 和这样做是一样的

class X:
  @classmethod
  def create(cls) -> 'X': # <-- Note the quotes
    pass

但自动。 这将是未来 Python 版本(最初是 3.10,但由于兼容性问题而被推迟)中的默认行为,但现在导入将使其行为符合您的要求。

在 Python 3.7 中添加了未来的导入。 如果您使用的是旧版本的 Python,则必须手动将类型包装在字符串中,就像我在上面的示例中所做的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM