当前位置: 首页 > 面试题库 >

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

姜阳
2023-03-14
问题内容

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


问题答案:

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

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



 类似资料:
  • 问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,

  • 我在应用程序部署期间进行Hibernate验证时遇到了一些问题。我有两个类,Frame和FrameReleasePlan,它们在OneToOne关系中关联。在数据库端,关系是单向的。frame_release_planss表有一个NUMERIC(19,0)类型的“frame_id”列,它是一个指向frame表“id”列的外键。当我尝试部署时,模式验证失败并出现错误: 无法生成Hibernate S

  • 问题内容: 我在项目中创建了一个工厂类,从理论上讲,该类允许我为任何(受支持的)给定类型创建管理器。与管理器进行交互使我可以更改给定类型的某些属性。我面临的问题是,当我尝试为泛型类型创建管理器时,编译器粉碎了我的希望和梦想。 以下代码是我正在使用的简化版本。我尝试创建“ test3Manager”的行将不会编译,并且我试图了解为什么会这样。它下面的线显示了一种“解决方法”,我正试图避免这种情况。

  • 与有界通配符相关的编译器错误 应兼容的不兼容通配符类型

  • 在kotlin引用的属性和字段一节中,写了以下示例: var AllByDefault:int?//错误:需要显式初始化器,隐含默认getter和setter @toniedzwiedz的回答解决了这个问题。这是我的错.我把属性和变量搞错了。

  • 我有一个抽象的泛型“Foo”解决方案类,我的特定实现继承了它。此类是泛型的,允许实现类定义其特定的规划实体,该实体扩展了“Bar” 这会扼杀 optaplanner,这会吐出如下错误: solutionProperty(列表)未按预期克隆。FieldAccessingSolutionCloner无法识别该属性的字段,可能是因为其字段名不同。 我已经尝试用特定的实现类替换“EntityType ”,