python如何对实例属性进行类型检查


Posted in Python onMarch 20, 2018

本文实例为大家分享了python对实例属性进行类型检查的具体代码,供大家参考,具体内容如下

案例:

在某项目中,我们实现了一些类,并希望能像静态语言那样对他们的实例属性进行类型检查

              p = Person()

              p.name = ‘xi_xi'          # 必须是str

              p.age = 18                 

# 必须是int

              p.height = 1.75               # 必须是float

需求:

可以对实例变量名指定类型

赋予不正确类型抛出异常

#!/usr/bin/python3
 
 
class Attr(object):
 """
 对Person类中属性进行类型检查
 """
 # 传入字段名字 + 指定字段类型
 def __init__(self, name, style):
  self.name = name
  self.style = style
  
 # 取值
 def __get__(self, instance, owner):
  return instance.__dict__[self.name]
  
 # 设值
 def __set__(self, instance, value):
  # 判断参数类型是否满足条件
  if isinstance(value, self.style):
   instance.__dict__[self.name] = value
  else:
   raise TypeError('need type: %s' % self.style)
  
 # 删除值
 def __delete__(self, instance):
  del instance.__dict__[self.name]
 
 
class Person(object):
 name = Attr('name', str)
 age = Attr('age', int)
 height = Attr('height', float)
  
 
if __name__ == '__main__':
 p = Person()
  
 p.name = 'xi_xi'
 # p.name = 55
 p.age = 18
 p.height = 1.75
 print(p.name, p.age, p.height)
  
 del p.height

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作摄像头截图实现远程监控的例子
Mar 25 Python
利用Python获取操作系统信息实例
Sep 02 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
PyQt5每天必学之组合框
Apr 20 Python
简单了解django orm中介模型
Jul 30 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
Jun 28 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
python如何在循环引用中管理内存
Mar 20 #Python
Windows 7下Python Web环境搭建图文教程
Mar 20 #Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 #Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 #Python
Django开发中复选框用法示例
Mar 20 #Python
python如何通过twisted实现数据库异步插入
Mar 20 #Python
分分钟入门python语言
Mar 20 #Python
You might like
YII动态模型(动态表名)支持分析
2016/03/29 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
python实现排序算法
2014/02/14 Python
Python实现的tab文件操作类分享
2014/11/20 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
优秀员工表扬信
2014/01/17 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
信息管理专业自荐书
2014/06/05 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
小学生表扬稿范文
2015/05/05 职场文书
山楂树之恋观后感
2015/06/11 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Python实现滑雪小游戏
2021/09/25 Python