pycharm 不显示对象的所有属性和方法

Xav*_*ier 2 python opencv

我在用python写opencv的时候,通过imread方法得到了image对象,但是当我尝试使用该对象时,却看不到该方法的任何属性或方法。

像这样 在此处输入图片说明

当我使用iPython或使用dir()方法检查时,我可以看到它 在此处输入图片说明

在此处输入图片说明

Elm*_*lmo 7

当 PyCharm 无法猜测方法返回的对象类型时会发生imread()这种情况-在这种情况下。一些方法根据输入返回不同类型的对象。您必须查看 opencv 源代码以了解为什么不清楚返回的类型是什么。代码的静态分析检测明显的情况。
IPython 已经执行了该方法,因此很清楚返回的是什么类型。
一种解决方案,如果你知道返回的类型,是使用这样的类型注释:

import cv2
import numpy
# I've checked with IPython that the returned object is a `numpy.ndarray` instance

img = cv2.imread('/home/me/Pictures/image.jpg')  # type: numpy.ndarray
Run Code Online (Sandbox Code Playgroud)

然后如果你输入img.你会看到 在此处输入图片说明

PEP 0484 中描述了该功能。
这个 PEP 说它是在 Python 3.5 中引入的。然而,PyCharm 可能可以在比 3.5 更旧的 Python 版本中处理这个简单的情况,但我没有检查。
此 PEP 描述typing了旧 Python 版本中不可用的模块功能,因此本文档中的大部分功能将无法使用,但我不确定 PyCharm 是否真的使用typing模块来解析类型注释或本机执行。