2015-10-20 14 views
13
def someproperty(self, value): 
    """ 
    :type value: int 
    """ 
    assert isinstance(value, int) 
    # other stuff 

Ich möchte, dass Pycharm aktiviert wird, wenn der Benutzer den Wert auf etwas anderes als ein int setzt. Ich verwende bereits einen Typhinweis. Gibt es eine andere Möglichkeit, diese Funktionalität zu erhalten? Vielen Dank im Voraus für Ihre Informationen.Ist es möglich, in PyCharm statische Assertions zu haben?

+0

Vielleicht, wenn PyCharm [PEP 484] unterstützt (https://www.python.org/dev/peps/pep-0484/)? –

Antwort

11

Mit PyCharm Sie können etwas nahe an statische Typprüfung erhalten, geben Erklärungen verwenden und die Schwere der „Type-Checker“ Inspektion zu erhöhen:

enter image description here

Dies wird Typprüfungen sehr prominent in Ihrem Code machen :

enter image description here

8

Python hatte vor kurzem eine große Entwicklung um statische Typisierung. Beginnend mit Python 3.5, Typ Hinweise sind eine Sache. Genau darum ging es bei PEP 0484. Die Typ-Hintsyntax basiert vollständig auf der Funktion Anmerkungssyntax, die früher mit PEP 3107 eingeführt wurde. Dies erlaubte es, dass PEP 0484 eine Änderung war, die keine neue Syntax beinhaltete, was es sehr attraktiv und leicht anzupassen macht.

Also, wie funktioniert das? Die Syntax ist in einfachen Fällen ziemlich intuitiv. Zum Beispiel:

def greeting(name: str) -> str: 
    return 'Hello ' + name 

Das Typhinweis-System unterstützt jedoch auch sehr komplizierte Dinge. Sie können auch Benutzertypen, Callables, mehrere Überladungen mit Unionen, sogar generische Typen verwenden. Sie können viele Beispiele in der PEP selbst sehen.

Sie können auch Guido van Rossum’s talk über Typ Hinting auf der letzten PyCon sehen, es ist wirklich interessant und deckt viele Details ab.

Schließlich, was machen wir mit all diesen Typhinweisen? Nun, es gibt diese großartige Bibliothek, die schon lange vor Python 3.5 und PEP 0484 existiert. Tatsächlich basiert die Typhinweis-Syntax, die offiziell eingeführt wurde, auf dieser Bibliothek, ist aber nur formalisiert. Die Bibliothek heißt mypy und ist im Grunde eine statische Typüberprüfung für Python. Nach der Installation können Sie die ausführbare Datei mypy verwenden, um ein beliebiges Python-Skript zu prüfen, das Typanmerkungen enthält.

Zum Beispiel, lassen Sie uns in einer Datei über Funktionsdefinition setzen, und nennen Sie es mit den falschen Argumente:

greeting(123) 

Lauf mypy auf die Datei, gibt die folgende Ausgabe:

$ mypy test.py 
test.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str" 

Mypy, obwohl technisch experimentell, ist ein sehr mächtiges Werkzeug, das wirklich gut funktioniert. Wenn Sie in dieser Sache sind und Typanmerkungen annehmen würden, dann sollten Sie es wirklich überprüfen.

+1

Ist es möglich, PyCharm zu integrieren? –

+1

@ DagHøidahl Laut [dieser Seite] (https://www.jetbrains.com/pycharm/help/type-hinting-in-pycharm.html) und einigen anderen Quellen, die ich gefunden habe, werden Typhinweise mit Funktionskommentaren tatsächlich unterstützt Code-Vervollständigung.Es ist nur die Validierung mit Mypy, die separat ausgeführt werden müsste. – poke

1

PyCharm 5 seems to support PEP 484. Eine Antwort auf diese Frage für PyCharm 5 und Python 3.5 ist also die Verwendung von Typhinweis.

Verwandte Themen