当前位置: 首页 > news >正文

贵阳手机网站建设免费入驻的卖货平台

贵阳手机网站建设,免费入驻的卖货平台,京山网站设计公司,门户网站做pos机今天咱们聊聊Python类型标注中的泛型(Generic),与协变(Covariant)。 不了解类型标注的小伙伴,可以先看一看我的上一篇文章 “Python类型检查” Python 类型检查-CSDN博客 例子 这次我开个宠物商店。看下面代码。 class Animal:passclass Dog(Animal):passclass Cat(A…

今天咱们聊聊Python类型标注中的泛型(Generic),与协变(Covariant)。

不了解类型标注的小伙伴,可以先看一看我的上一篇文章 “Python类型检查” Python 类型检查-CSDN博客

例子

这次我开个宠物商店。看下面代码。

class Animal:passclass Dog(Animal):passclass Cat(Animal):pass

首先我们定义了宠物的基类Animal,Dog和Cat都是Animal的子类。

然后是商店类Store

class Store:def __init__(self, stock: List[Animal]) -> None:self.stock = stockdef buy(self) -> Animal:return self.stock.pop()

商店的构造函数会接受一个Animal的列表stock,当作商店的库存。有人买东西时,buy函数就从库存里面拿出一个动物当作返回值。

为了简洁,我这里没有判断stock里面到底还有没有动物,直接就pop了。小伙伴们写代码时请务必不要向我学习。

然后老王宠物店就开张了。我们生成一个Store的实例叫wang。调用buy方法卖东西。

wang = Store([Dog(), Cat()])
print(wang.buy())

来运行一下程序和类型检查器mypy。

$ mypy covar.py
Success: no issues found in 1 source file

太好了,没有错误。

泛型

这时,假如老王我对猫过敏,所以决定从今以后宠物店里只卖狗了。要怎么办呢?

最直接的办法是改Store的类型标注,把构造函数里的List[Animal]改成List[Dog]。buy的返回值也改成Dog。

class Store:def __init__(self, stock: List[Dog]) -> None:self.stock = stockdef buy(self) -> Dog:return self.stock.pop()

结果刚改好,对门儿宠物店的老李头骂着街就过来了。因为他家的猫没法卖了。那到底怎么办呢?泛型就可以解决这个问题。

“Python类型检查” 中我们聊的List,Sequence都是泛型。比如我写

a: List
http://www.dinnco.com/news/329.html

相关文章:

  • 常见网站类型汕头seo管理
  • 简单门户网站开发宜昌网站seo
  • 网站制作南宁黑帽seo培训大神
  • 域名服务器的作用是什么运营seo是什么意思
  • 耒阳做网站如何推广平台
  • 网站建设怎么做更好如何做好网络营销工作
  • redis做缓存的网站并发数永久免费建个人网站
  • 买什么样的主机(用来建网站的)支持下载建网站需要什么
  • 门户网站建设与开发潍坊seo排名
  • 便宜点的网站空间seo还能赚钱吗
  • 网站建设费用预算如何把网站推广
  • 青少年活动中心网站建设依据经典品牌推广文案
  • wordpress wp syntax重庆百度推广seo
  • 温州专业手机网站制作多少钱百度seoo优化软件
  • 高端网站建设高端网站建设专家抖音seo推荐算法
  • 电子商务网站建设与全程实例华为云速建站
  • 轻淘客cms建站教程百度搜索数据
  • 做调查网站怎样换IP湛江今日头条新闻
  • 什么网站可以做汽车国际贸易百度seo发包工具
  • 腾讯企业邮箱官网登录入口网页版网站内部链接优化方法
  • 网站空间需要续费网站推广是干嘛的
  • 海北公司网站建设多少钱网站推广推广
  • 用自己电脑做网站服务器seo综合查询是什么意思
  • 时间轴 网站模板注册自己的网站
  • 湛江小程序开发公司网站搜索引擎优化的基本内容
  • 怎么做卖花的网站如何软件网站优化公司
  • 网站开发实例及研究百度指数免费添加
  • html5做图网站网站上不去首页seo要怎么办
  • 服务器 网站建设2022适合小学生的简短新闻摘抄
  • 思源黑体做网站2024最火的十大新闻有哪些