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

Python 2中的类型提示

单于庆
2023-03-14
问题内容

在PEP
484中
,包含typing模块的类型提示已添加到Python
3中。在Python
2中有什么方法可以做到这一点?我能想到的就是有一个装饰器来添加到检查类型的方法中,但这将在运行时失败,并且不会像提示所允许的那样被较早地捕获。


问题答案:

根据 Python 2.7的建议语法和 定义类型提示的PEP 484中的
跨代码
,存在与Python
2.7兼容的另一种语法。但是,它不是强制性的,因此我不知道它的支持程度如何,而是引用PEP:

某些工具可能希望在必须与Python
2.7兼容的代码中支持类型注释。为此,该PEP具有建议的(但不是强制性的)扩展名,其中功能注释位于#类型:注释中。这样的注释必须放在函数头之后(在文档字符串之前)。一个示例:以下Python
3代码:

def embezzle(self, account: str, funds: int = 1000000, *fake_receipts:

str) -> None:
“”“Embezzle funds from account using fake receipts.”“”

等效于以下内容:

def embezzle(self, account, funds=1000000, *fake_receipts):
    # type: (str, int, *str) -> None
    """Embezzle funds from account using fake receipts."""
    <code goes here>

要获得mypy支持,请参阅 类型检查Python
2代码



 类似资料:
  • 问题内容: class Node: def append_child(self, node: Node): if node != None: self.first_child = node self.child_nodes += [node] 我该怎么办?因为当我运行它时,它说。 我应该只删除and实例在函数中检查它吗?但是,我该如何访问的属性(我希望它是类的实例)? 我不知道如何在Python,

  • 问题内容: 我想允许使用Python 3进行类型提示,以接受某个类的子类。例如: 现在,当输入以下代码时: 我得到一个PyCharm IDE提示“期望的类型A,取而代之的是Type [B]。” 如何更改此处的类型提示以接受A的任何子类型? 据此(https://www.python.org/dev/peps/pep-0484/#type-definition- syntax ,“该类型的参数也接受

  • 我希望允许使用Python 3进行类型提示以接受某个类的子类。例如。: 现在当键入以下代码时: 我收到一个 PyCharm IDE 提示“预期的类型 A,而是获得类型 [B]。 如何在这里更改类型提示以接受? 根据PEP 484(“类型为特定参数类型的子类型的表达式也可用于该参数。”),我知道我的解决方案< code>(cls: A)应该可以工作?

  • 我试图在Python3.5中使用类型提示。1,代码如下: 我猜在解析类型A时,类型A还没有完全构造,这是范围界定的问题,但我不理解为什么这样的语法不正确。是否有其他方式来表达它,或者它只是一个非法的构造? 我想在基类中使用这个语法提示,它可以在树状层次结构中组成派生类。

  • 示例代码: import logging logger = logging.getLogger() logging.basicConfig(level=logging.INFO) def main(event): print "test function log by print" logger.info("test function log by logger") re

  • 有没有办法在类中定义参数的类型,以便该类型引用自身? 例如,以下内容不会运行: 错误: