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中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
详解python开发环境搭建
Dec 16 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
Python基础之函数的定义与使用示例
Mar 23 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python生成并下载文件后端代码实例
Aug 31 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
python调用win32接口进行截图的示例
Nov 11 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
深入密码加salt原理的分析
2013/06/06 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python发送伪造的arp请求
2014/01/09 Python
python实现从web抓取文档的方法
2014/09/26 Python
python批量提交沙箱问题实例
2014/10/08 Python
Python3 处理JSON的实例详解
2017/10/29 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
音乐专业应届生教师求职信
2013/11/04 职场文书
学生会招新策划书
2014/02/14 职场文书
环境工程专业自荐信
2014/03/03 职场文书
市政管理求职信范文
2014/05/07 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
保护动物的宣传语
2015/07/13 职场文书