In PEP 484, Typ Hinting wurde zu Python 3 mit der Aufnahme der typing
-Modul hinzugefügt. Gibt es eine Möglichkeit, dies in Python 2 zu tun? Alles, was mir einfällt, ist ein Dekorator, der zu den Methoden hinzugefügt werden kann, um die Typen zu überprüfen, aber das würde zur Laufzeit scheitern und nicht früher erwischt werden, so wie es die Hinweise erlauben würden.Typ Hinting in Python 2
Antwort
Nach Suggested syntax for Python 2.7 and straddling code in PEP 484, die Typ Hinting definiert, gibt es eine alternative Syntax für die Kompatibilität mit Python 2.7. Es ist jedoch nicht zwingend notwendig, damit ich weiß nicht, wie gut unterstützt es ist, aber unter Angabe der PEP:
Einige Tools möchten Typenannotationen in Code unterstützen, die mit Python 2.7 kompatibel sein müssen. Zu diesem Zweck hat diese PEP eine vorgeschlagene (aber nicht obligatorische) Erweiterung, bei der Funktionsanmerkungen in einem # type: comment platziert werden. Solch ein Kommentar muss unmittelbar nach dem Funktionskopf (vor dem Docstring) platziert werden. Ein Beispiel: Die folgenden Python 3-Code:
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None: """Embezzle funds from account using fake receipts.""" <code goes here>
entspricht der folgenden:
def embezzle(self, account, funds=1000000, *fake_receipts): # type: (str, int, *str) -> None """Embezzle funds from account using fake receipts.""" <code goes here>
Für mypy
Unterstützung finden Type checking Python 2 code.
An diesem Punkt die empfohlene und python3 gerecht ist zu tun, um die python2 bis 3 Anleitung folgen: http://python-future.org/func_annotations.html
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None:
"""Embezzle funds from account using fake receipts."""
pass
werden:
def embezzle(self, account, funds = 1000000, *fake_receipts):
"""Embezzle funds from account using fake receipts."""
pass
embezzle.__annotations__ = {'account': str, 'funds': int, 'fake_receipts': str, 'return': None}
- 1. PyCharm Typ Hinting Seltsamkeit
- 2. Unterstützt Ruby Typ-Hinting?
- 3. PHP Typ-Hinting Merkmale
- 4. Python-Typ-Hinting mit Einschränkung für Typ-Superklasse
- 5. PHP Typ Hinting mit Enumartions?
- 6. Anaconda + SublimeText, meldet Typ Hinting als Fehler
- 7. Typ Hinting für Eigenschaften in PHP 7?
- 8. Python 3.5 Type Hinting Werkstyp
- 9. PHP Typ Hinting: Array unterstützt, Objekt nicht?
- 10. Typ Hinting/Annotation (PEP 484) für numpy.tarray
- 11. Iterable Objekte und Array Typ Hinting?
- 12. Objekttyp Hinting in PHP
- 13. Difference vom Typ() Funktion in Python 2 und Python 3
- 14. JetBrains WebIDE: PHP Variablentyp Hinting?
- 15. Variablentyp Hinting in Netbeans (PHP)
- 16. PHPDoc Type Hinting überlappende Typen
- 17. Unterstützt ColdFusion type hinting?
- 18. PHP 7 Rückgabetyp Hinting
- 19. Typ Sicherheit in Python
- 20. Type Hinting und optionale Attribute in PHP
- 21. Eloquenter ORM Code Hinting in PhpStorm
- 22. Typ Erklärung Python Fehler
- 23. PhpStorm/PhpDoc Typ-Hinting für Return-Variable in einem magischen Objekt
- 24. Concurrent in Python 2
- 25. Wie in Python 2
- 26. Gibt es Unterstützung für XML-Code-Hinting/Vervollständigung in Sublime Text 2?
- 27. String-Typ in Python Sprache
- 28. Typ Fehler in Python 2.7
- 29. Convert numpy Typ in Python
- 30. Unvollständige Typ Element in lang foo [2] []
Hmm ok, sollte weiter die Dokumentation gelesen haben. Weißt du, ob es irgendwelche Tools gibt, die dies derzeit unterstützen? Nicht sicher, ob es sich nur um einen Standard handelt oder ob tatsächlich Werkzeuge implementiert wurden. – Andrew
Gemäß PyCharm "PyCharm unterstützt type Hinting in Funktion Anmerkungen und Typ Kommentare mit dem Typisierungsmodul von PEP 484 definiert." Der Verweis auf TYPE COMMENTS macht deutlich, dass es unterstützt werden sollte. Ich verwende pyCharm nicht auf diesem Computer, deshalb kann ich es jetzt nicht überprüfen. EDIT: Link zu pycharm: https://www.jetbrains.com/pycharm/help/type-hinting-in-pypcharm.html#d316912e110 – Mijamo
Danke, auch gefunden, dass Emacs Jedi damit auch arbeitet. – Andrew