Ich habe eine Funktion, die andere Python-Funktionen akzeptiert, die mit Typhinweisen versehen sind (__annotations__
). Ich möchte diese Hinweise verwenden, um während der Laufzeit eine Typprüfung durchzuführen. Das Problem ist, dass Typklassen von Typisierungsmodul nicht sehr einfach zu arbeiten scheint (no isinstance, no issubclass). Also, frage ich mich, gibt es eine Möglichkeit, sie zu mypy-artigen Objekten zu konvertieren und dann mypy.subtypes.is_subtype
zu verwenden, um Typen von Typhinweisen zu vergleichen?Vergleichen von Typen aus Python
Antwort
Die kurze Antwort ist es gibt keinen einfachen Weg. Das typing
-Modul wird vom Design her nicht viel Hilfe für die Laufzeitprüfung bieten. PEP 484 sagt
Dieser PEP zielt darauf ab, eine Standardsyntax für Typen Anmerkungen zur Verfügung zu stellen, Öffnung Python-Code einfacher statische Analyse und Refactoring, mögliche Laufzeittypprüfung und (vielleicht in manchen Kontexten) Code Generation Verwendung von Typinformationen.
Von diesen Zielen ist die statische Analyse am wichtigsten. Dazu gehören Unterstützung für Offline-Typ-Checker wie
mypy
, sowie eine Standardnotation, die von IDEs für die Code-Vervollständigung und Refactoring verwendet werden können.Nicht Ziele
Während der vorgeschlagene
typing
Modul einige Gebäude Blöcke zur Laufzeit Typprüfung enthält - insbesondere dieget_type_hints()
Funktion - Pakete von Drittanbietern haben würden implementieren spezifische entwickelt werden B. mit Dekoratoren oder Metaklassen. Die Verwendung von Typhinweisen für die Performance Optimierungen bleibt dem Leser als Übung überlassen.
Ja, also meine Frage ist, wie man 'mypy' für die Überprüfung des Laufzeittyps verwendet. Ich verstehe, dass "Tippen" es nicht bietet, aber wie "Mypy" in den Code stecken, um seine Fähigkeiten zu nutzen? – Mitar
- 1. Vergleichen von Typen Laravel
- 2. Vergleichen von Typen mit Swift
- 3. Vergleichen ganzer Zahlen beliebiger Typen
- 4. Vergleichen von Python Hashes
- 5. Verständnis iterable Typen in Vergleichen
- 6. Python Vergleichen von Listen
- 7. Vergleichen von Spielnamen python
- 8. Vergleichen von Python-Listen
- 9. Vergleichen Sie zwei Arrays unterschiedlicher Typen
- 10. Vergleichen von Variablen aus Datei
- 11. Vergleichen von MD5s in Python
- 12. Elemente aus zwei Listen in Python vergleichen
- 13. Verhindern des Aufrufs von C-Typen aus Python
- 14. Typen vergleichen, wenn man nullable ist
- 15. vergleichen 2 Listen aus verschiedenen Syntaxen Python
- 16. Vergleichen NULL-Typen in Linq zu Sql
- 17. Vergleichen von Werten aus verschiedenen Datenrahmen Zeile für Zeile, Python
- 18. Java 8: Effizientere Methode zum Vergleichen von Listen verschiedener Typen?
- 19. Wie zwei generische Typen zu vergleichen?
- 20. Vergleichen von Daten in Python
- 21. Vergleichen von Listen in Python
- 22. Vergleichen von Ausgaben in Python
- 23. Vergleichen von Ausnahmeobjekten in Python
- 24. Python - Inhalt von Textdateien vergleichen
- 25. Der Compiler wird mich nicht vergleichen Typen
- 26. Wie vergleichen Sie generische Typen in Swift?
- 27. Vergleichen und sortieren von parametrisierten Typen in einer Liste?
- 28. Warum verursacht das Vergleichen von Typen in MYSQL keinen Fehler?
- 29. Vergleichen der Anzahl von mehreren Listen mit mehreren Typen?
- 30. Vergleichen von Python dicts mit Gleitkommawerten enthalten
'inspect' Modul wird helfen. – stamaimer