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多线程编程(五):死锁的形成
Apr 05 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
wxPython使用系统剪切板的方法
Jun 16 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
python如何对实例属性进行类型检查
Mar 20 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Python requests模块session代码实例
Apr 14 Python
python计算auc的方法
Sep 09 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 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实现上一篇下一篇的方法实例总结
2016/09/22 PHP
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
服装设计专业毕业生推荐信
2013/11/09 职场文书
工程建设实施方案
2014/03/14 职场文书
学生请假条格式
2014/04/11 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
小学数学教研活动总结
2014/07/01 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
演讲比赛主持词
2015/06/29 职场文书
暑假打工感想
2015/08/07 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
Nginx 常用配置
2022/05/15 Servers