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中is和id的用法
Apr 03 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python制作小说爬虫实录
Aug 14 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
python redis 删除key脚本的实例
Feb 19 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
Python实现文字pdf转换图片pdf效果
Apr 03 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
js获取div高度的代码
2008/08/09 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
浅谈js原生拖放
2016/11/21 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
python实现图片中文字分割效果
2019/07/22 Python
基于django传递数据到后端的例子
2019/08/16 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Python如何实现爬取B站视频
2020/05/20 Python
物流业务员岗位职责
2014/02/08 职场文书
报关专员求职信范文
2014/02/22 职场文书
设备技术员岗位职责
2015/04/11 职场文书
最感人的道歉情书
2015/05/12 职场文书
家长意见书
2015/06/04 职场文书
员工旷工检讨书
2015/08/15 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
导游词之包公祠
2019/11/25 职场文书
解析Java异步之call future
2021/06/14 Java/Android