Python 3.5 Typ Hinting führt nicht zu einem Fehler

Eines der neuen Features in python 3.5 ist Typ, der von diesem Projekt inspiriert ist.

Typisierung: PEP 484 – Typ Hinweise.

Ich möchte es testen, aber es funktioniert nicht wie erwartet.

import typing class BankAccount: def __init__(self, initial_balance: int = 0) -> None: self.balance = initial_balance def deposit(self, amount: int) -> None: self.balance += amount def withdraw(self, amount: int) -> None: self.balance -= amount def overdrawn(self) -> bool: return str(self.balance < 0) my_account = BankAccount(15) my_account.withdraw(5) print(type(my_account.overdrawn())) 

Ergebnisse in:

 <class 'str'> 

Ich würde einen Fehler erwarten, weil ich einen Bool als Rückkehr erwarte. Ich habe es auf Python getestet: 3.5 (Docker) und lokal. Habe ich etwas verpasst, um es zu machen? Gibt es diese Art nicht zur Laufzeit (wie python app.py)?

2 Solutions collect form web for “Python 3.5 Typ Hinting führt nicht zu einem Fehler”

Siehe den fünften Absatz der Zusammenfassung in der PEP Sie Link zu:

Während diese Annotationen zur Laufzeit über das übliche __annotations__ -Attribut zur Verfügung stehen, erfolgt keine Typprüfung zur Laufzeit . Stattdessen geht der Vorschlag davon aus, dass ein separater Off-Line-Checker existiert, den Benutzer über ihren Quellcode freiwillig ausführen können

Um static Kontrollen zu erhalten, betrachte mypy ein Projekt wie mypy , auf dem PEP 484 basierte.

Keine Überprüfung wird auf Laufzeit durchgeführt wird explizit in der PEP deklariert, um die Ängste vor einigen Übergang zu einem statischen aussehenden Python zu erleichtern.


Wie Daniel darauf hinweist, können Sie die Attribute im Attribut __annotations__ in Form von:

 {'return': bool} 

Für Funktion overdrawn() .

Wenn Sie möchten, können Sie Ihre eigene kleine Typ-Checking-Funktion erstellen, um kleine Laufzeitprüfungen unter Verwendung dieses dict durchzuführen. Herumspielen mit ihm. Darüber hinaus, wenn Sie sich für die lesen, werfen Sie einen Blick auf meine Antwort auf Art Hinweise hier .

  • Python 3 Typ Hinweise für Leistungsoptimierungen
  • So geben Sie mehrere Rückgabetypen mit Hilfe von Typ-Hinweisen an
  • Typ Hinweis in Python 2
  • Python 3 Anmerkungen: Tippen Sie auf eine Liste eines angegebenen Typs (PyCharm)
  • Python ist die beste Programmiersprache der Welt.