首页 > 编程语言 >python工程里面的类型的思考

python工程里面的类型的思考

时间:2023-03-26 22:56:32浏览次数:40  
标签:里面 python 思考 类型 返回值 父类 方法

虽然我的工程语言是python语言,在工程搭建过程中非常注意类型提示的问题。

关于方法的方法的返回值类型的问题:

常用的方式是在函数/方法书写一些尖头+类型,这样调用方能很方便的对return值进行方法的提示。这也是最常用的的一种方式。有时候对于第三方库的方法的返回值,无法类型提示的话,我们可以简单定位一下源码,可以很简单的定位到返回值的class类型(第三方库一般使用类),然后在接收的返回值的后面加上冒号+类型。 这样后续的代码书写就容易了很多,不用对着文档找方法了。

由于python这些弱类型的语言存在“鸭子类型”的问题(可自行百度),有时候知道父类内部存储的是什么东西。比如我想用python设计一个链表,并且链表里面存什么类型的东西(可以统一存一个dict结构,或者一个str结构),是自由的,但是父类里面不知道肚子里面放的是什么东西(或者说父类里面存放了链表的基本方法),我们又设计了dict内容的链表子类,子类在get_first(父类的方法)的时候,父类是不知道返回的是什么类型的,此时就无法直接做类型提示,当然可以通过“在接收的返回值的后面加上冒号+类型”的方法进行类型提示,这里有个更聪明的方法:使用python里面的范型,可以完美解决这个问题。其实范型这个概念在其他语言里面都是存在的,比如JS的范型,C++的模版语法,都是类似的概念。在我的工作中,范型这个东西用的最典型的是重构sqlaclmy的数据操作。基础操作类+各种的表类(具体的Model操作类)。

关于类型这块还有两个点需要注意的,1、在方法参数的书写过程中,每个参数都要标记上类型。2、慎用dict,如果在同一个方法内部,上下相距比较短,还是推荐使用dict的,反之,可以考虑使用pydantic.BaseModel。 关于声明类型这块,fastapi库是里面的集大成者。这些东西在工程里面不是要不要的问题,而是如何把自己的类型都搞成类型声明或者把核心常调用的都搞成类型声明的问题。

另外关于设计模式的使用问题,也有一些技巧,总之就是pythonic的问题,直接拿过来可能会有很多的冗余代码。

标签:里面,python,思考,类型,返回值,父类,方法
From: https://www.cnblogs.com/xunhanliu/p/17259861.html

相关文章

  • Python3.0 新特性
    这篇文章主要介绍了相比于python2.6,python3.0的新特性。更详细的介绍请参见python3.0的文档。CommonStumblingBlocks本段简单的列出容易使人出错的变动。  *prin......
  • Python函数闭包(看一遍就懂系列)
    闭包的定义定义:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)下面这个就是一个简单的闭包函数defExFunc(n):sum=ndefInsFunc():......
  • Python多任务-多线程-多进程-协程-进阶学习
    --多任务-多线程-多进程-协程-进阶学习--文中所提到的案例参考:GITHUB中项目文件夹https://github.com/FangbaiZhang/Python_advanced_learning/tree/master/02_Python_ad......
  • CMD窗口中运行python脚本(虚拟环境下运行py文件)
    项目文件夹创建虚拟环境参考博文:WIN10系统下的Python3.7安装虚拟环境virtualenv和创建Web网站下面以Python_advanced_learning项目文件中的005_MiniWeb_Web服务器_实现模......
  • python+selenium实现在某瓣上自动批量获取中文电影的英文名称
    一、需求背景知道一些电影的中文名称,但是想在国外网站上,查一下这些中文电影的评分。因此就必须知道这些中文电影的英文名称是什么,由此诞生次脚本 二、实现思路通过sele......
  • python3实现阿里云短信发送功能
    #-*-coding:utf-8-*-importuuidimportsysimportjsonimportuuidfromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcore.profileimportregion_pr......
  • Python实例讲解 -- 操作数据库 附mysqldb win32 py2.7下载
    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法。python操作数据库需要安装一个第三方的模块,在http://mysq......
  • Python实例讲解 -- 解析xml
    doc.xml <?xmlversion="1.0"encoding="utf-8"?><info><intro>信息</intro><listid='001'><head>auto_userone</head><name>Jordy</name>......
  • Python字符串的encode与decode
    首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成......
  • Python 列表 list 数组 array
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 sample_list=['a',1,('a','b')]Python列表操作 sample_list=['a','b',0,1,3]得到......