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 学习笔记
Dec 27 Python
python实现基于SVM手写数字识别功能
May 27 Python
Python实现的knn算法示例
Jun 14 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
python神经网络编程实现手写数字识别
May 27 Python
python中复数的共轭复数知识点总结
Dec 06 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
python 可视化库PyG2Plot的使用
Jan 21 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
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php实现多城市切换特效
2015/08/09 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
python实现彩票系统
2020/06/28 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
应届生污水处理求职信
2013/11/06 职场文书
教学器材管理制度
2014/01/26 职场文书
有关环保的标语
2014/06/13 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
跑吧孩子观后感
2015/06/10 职场文书
高中体育课教学反思
2016/02/16 职场文书
《学会看病》教学反思
2016/02/17 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS