2017-08-14 2 views
0
class Class: 

def __init__(self, path): 

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

Lorsque je tente de saisir lecture() IntelliSense dit pas complétions.
Cependant, je sais open() retourne fonction objet fichier , qui a lecture() fonction. Je veux voir toutes les fonctions prises en charge après avoir tapé un point.PTVs IntelliSense ne fonctionne pas pour intégré Fonction

PyCharm me montre la liste des fonctions recommandé, mais PTVs ne supporte pas. Je veux savoir que ce sont des choses occasionnelles dans PTVS ou qui m'arrivent seulement.

Mon actuelle Python est Anaconda Enviroment 4.3.0 (Python 3.5.3)

Comment puis-je résoudre ce problème?

Répondre

0

Nous avons déjà corrigé le cas spécifique d'open pour notre prochaine mise à jour (pas celle publiée aujourd'hui - la suivante), mais en bref, le problème est que vous ne savez pas vraiment ce qui va ouvrir . Dans notre correctif, nous supposons l'un des deux types probables, qui devraient couvrir la plupart des cas d'utilisation.

Pour travailler autour d'elle en ce moment, votre meilleure option est d'attribuer le résultat d'une ouverture à une variable et le forcer à un certain type en utilisant une instruction assert. Par exemple:

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

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

Notez que votre code va maintenant échouer si la variable est pas le type prévu, et que le code pour Python 2 serait différent de cela, mais jusqu'à ce que vous pouvez obtenir la mise à jour où nous intégrons cette connaissances dans notre code, c'est le mieux que vous pouvez faire.