一尘不染

Python 3.5类型提示不会导致错误

python

python
3.5的新功能之一是受此项目启发的类型提示。

键入:PEP 484 –键入提示。

我想测试它,但是它没有按预期工作。

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()))

结果是:

<class 'str'>

我期待一个错误,因为我期望布尔作为回报。我在python:3.5(docker)和local上测试了它。我是否想念一些东西以使其起作用?这种键入是否在运行时不起作用(例如python
app.py)?


阅读 149

收藏
2021-01-20

共1个答案

一尘不染

请参阅您链接到的PEP中摘要的第五段:

尽管这些注释可以在运行时通过常用__annotations__属性使用, 但在运行时不会进行类型检查
。相反,该提案假定存在一个单独的脱机类型检查器,用户可以自愿运行其源代码。

2021-01-20