首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

from__future__import annotations V2

最近做了一些豆瓣的产品业务代码的Python 3迁移相关的准备工作。首先当然是要去改那些基础Model,除了代码符合Python3语法要求,这种基础的、核心的代码也要加上类型注解,结果一上来就遇到个问题,和大家分享下。 下面是一个模拟的简单版本的例子(豆瓣厂工和前厂工会理解这种写法)

我简单介绍下上面这段代码要做的事情:

Python是一种动态类型化的语言,不会强制使用类型提示,所以我们要借用外部的工具mypy做类型检查:

mypy的执行结果没有返回内容,说明我写的类型注解没有问题。但是运行不了

即使把 这部分去掉,下面的ImageCover那部分也会抛错:

这个问题可以看 PEP 563 ,简单地说是因为类型注解部分求值太早了,那个时候类还没创建完!

怎么办呢?让类型注解「延迟求值」,使用Python 3.7新加入的方案:

添加第一行,这样就可以了。

使用字符串替代类

第二次更新: 2018-12-30 19:55:57

文章发出后,@abc.zxy和@杨恺Thomas Young同学都提出了另外一个解决方案,就是使用对应字符串作为类型值:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190104G07FOP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券