PTVS IntelliSense不适用于内置功能

时间:2017-08-14 01:30:06

标签: python python-3.x anaconda intellisense ptvs

class Class:

def __init__(self, path):

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

当我尝试输入 read()时,intelliSense说没有完成
但是,我知道 open()函数返回文件对象,它具有 read()功能。我想在输入一个点后看到所有支持的功能。

PyCharm向我显示推荐的功能列表,但PTVS不支持。 我想知道这是PTVS中的随意事物,或者只发生在我身上。

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

我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

要立即解决它,最好的选择是将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的代码与此不同,您的代码现在将失败,但是直到您可以获得我们将此知识嵌入到代码中的更新,它是你能做的最好。