PTVS IntelliSense 不适用于内置功能

PTVS IntelliSense not working for Built-in Function

class Class:

def __init__(self, path):

    self._path = path
    string = open(self._path, 'r'). #HERE

当我尝试键入 read() 时,智能感知显示 没有完成
但是,我知道 open() 函数 returns file object,它有 read() 功能。我想在输入一个点后查看所有支持的功能。

PyCharm给我推荐的功能列表,但是PTVS不支持。 我想知道这是PTVS中的偶然事件还是只发生在我身上。

我当前的 Python 环境是 Anaconda 4.3.0 (Python 3.5.3)

我该如何解决?

我们已经为即将到来的更新修复了 open 的具体情况(不是今天发布的那个 - 下一个),但简而言之,问题是你真的不知道 open 会发生什么return。在我们的修复中,我们猜测应该涵盖大多数用例的两种可能类型之一。

要立即解决这个问题,最好的选择是将 open 的结果分配给一个变量,并使用 assert 语句将其强制为特定类型。例如:

f = open(self._path, 'r')
import io
assert isinstance(f, io.TextIOWrapper)

f = open(self._path, 'rb')
import io
assert isinstance(f, io.BufferedIOBase)

请注意,如果变量不是预期类型,您的代码现在将失败,并且 Python 2 的代码将与此不同,但直到您获得我们嵌入此知识的更新在我们的代码中,这是你能做的最好的。