【问题标题】:Typing hints PyCharm for a class used within itself [duplicate]键入提示 PyCharm 用于自身内部使用的类 [重复]
【发布时间】:2019-12-08 01:16:05
【问题描述】:

我如何在其自身中正确键入一个类?在 PyCharm 中,我目前收到此错误:

这是一个未解决的参考错误。这通常是有道理的,因为我不希望 PyCharm 完美地支持类型。但是,当我在除Item 类本身之外的其他类中使用它时,没有错误:

因此,我相信只有在其自己的类中提供类型提示时才会出现错误。所以我不知道具体要做什么来防止这个错误,或者我是否使用了错误的类型,并且不应该在其自身中使用类型。

基本上我试图模仿的行为是你有一个物品的制作配方,并且可以使用配方功能创建该物品的新实例。

【问题讨论】:

标签: python-3.x pycharm type-hinting


【解决方案1】:

当使用一个类作为该类中的类型时,或该类型尚未完全定义的任何地方,您需要在注释中将类型括在单引号或双引号中:

class Item:
    ...
    def craft(self, substrates: List['Item'], amount: int) -> List['Item']:
        ...

来源:

https://www.python.org/dev/peps/pep-0484/#forward-references

https://blog.jetbrains.com/pycharm/2015/11/python-3-5-type-hinting-in-pycharm-5/
(基于字符串的提示)

编辑:PEP 563:https://www.python.org/dev/peps/pep-0563/ 对此进行了改进。

【讨论】:

  • 为什么类在它本身时需要引号,而在另一个类中时不需要?我觉得这种行为有点奇怪
  • @RyanSchaefer 因为类中的类型注释在类中注释时无法“看到”类。类类型尚未定义。
  • 您能否附上一些关于此的文档的链接?
  • 啊,这有点道理。类型提示的功能是否与消耗品类中的类似?
  • @Tomerikoo 添加了来源
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2017-11-23
  • 2014-02-19
  • 2014-03-14
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多