【问题标题】:Make class known to Pycharm让 Pycharm 知道类
【发布时间】:2019-05-05 16:55:21
【问题描述】:

这是test.py的内容

def main(ccfg):
    print(ccfg.param)

这是main.py的内容:

import test
import cfg
ccfg = cfg.cfg()
test.main(ccfg)

cfg.py 包含一个配置类:

class cfg:
    def __init__(self):
        pass
    param = 5

在 test.py 中编写代码时,Pycharm(或任何其他 IDE)无法识别 ccfg 是 cfg 的实例。如何使 IDE 知道该类以便获得代码建议?

【问题讨论】:

标签: python intellij-idea ide pycharm


【解决方案1】:

在 IDE 中将您的文件夹标记为 Sources RootRight Click -> Mark Directory As -> Sources Root

【讨论】:

  • test.py 怎么知道 ccfg 是 cfg 的一个实例?!
  • test.py 什么都不知道。 PyCharm 谁知道。 PyCharm 解析文件夹中的文件,这些文件夹被指定为 Sources Root 并记住类型/实例。
  • 但是自动完成/代码建议是通过基于typeshed 内部副本的静态类型检查器完成的。它不需要将文件夹标记为 Sources Root。
  • 它不是从源代码构建它的代码数据库吗?我想,它会根据从 PyCharm 获得的项目源代码树上的信息来了解要解析的源代码
  • Typeshed 用于内置和知名的 3rd 方包。显然,它无法猜测用户编写的代码的类型。模块test.py 不知道main.py 使用cfg 的实例调用其main 方法。但是如果我们知道它总是 cfg 的实例,我们可以在 Python 3.5+ 中使用docstringsstubstyping 添加类型提示。
猜你喜欢
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2017-11-30
  • 2013-09-01
相关资源
最近更新 更多