【问题标题】:PyCharm / Python docstring return type hint for locally imported class本地导入类的 PyCharm / Python 文档字符串返回类型提示
【发布时间】:2018-09-26 08:29:37
【问题描述】:

我想在文档字符串中定义一个 rtype,使用一个未在模块中全局导入的类(因为我不能这样做,因为循环导入)。

即像这样:

def get_engine():
   """
   :rtype: sisyphus.localengine.LocalEngine
   """
   from sisyphus.localengine import LocalEngine
   return LocalEngine()

sisyphus 是一个包,sisyphus.localengine 是该包中的一个模块。我将sisyphus的父目录注册为PyCharm中的源根目录。

这似乎不起作用。至少 PyCharm (2018.2.4) 显示此函数的类型提示 () -> Any

如果我删除 rtype 提示,它会显示正确的提示 () -> LocalEngine,因此音频检测有效(如果我不想明确指定它)。

如何正确指定rtype 提示以使其有效?

【问题讨论】:

  • pycharm 是否自动检测该函数/方法返回的类型?

标签: python pycharm


【解决方案1】:

假设您在 python >=3.5 中,您可以在类型提示中使用 forward references
另请参阅此 jetbrains blog post

def foo() -> 'sisyphus.localengine.LocalEngine':
    ...

【讨论】:

  • 嗯,所以 PyCharm 将其标记为错误(在导入的模块 sisyphus 中找不到引用 localengine。)
  • 另外,Python 2 有什么方法吗?
  • 一般来说,您不应该在函数中导入模块。如果将导入移到文件顶部,它会起作用吗?
  • 不幸的是,这在 2.x 中无法完成,前向引用是在 3.5 中添加的。
  • 循环依赖,无法移出函数。
猜你喜欢
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 2021-02-11
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
相关资源
最近更新 更多