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

作者:北门吹雪 时间:2021-08-17 09:28:19 

本文实例为大家分享了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

来源:http://www.cnblogs.com/2bjiujiu/p/7289387.html

标签:python,实例属性,类型检查
0
投稿

猜你喜欢

  • python通过opencv调用摄像头操作实例分析

    2023-03-09 14:32:04
  • Python适配器模式代码实现解析

    2023-04-15 12:58:14
  • 学习ASP.NET八天入门:第七天

    2007-08-07 13:52:00
  • 效控制C#中label输出文字的长度,自动换行

    2023-07-22 04:02:49
  • Python进阶篇之正则表达式常用语法总结

    2022-03-27 08:45:18
  • 详解Python安装scrapy的正确姿势

    2023-04-04 01:38:14
  • web版Photoshop来了

    2008-04-21 13:39:00
  • python爬虫爬取某站上海租房图片

    2023-04-21 09:09:56
  • min-height 的原始实现方式

    2008-06-29 15:04:00
  • 在python tkinter中Canvas实现进度条显示的方法

    2023-06-04 18:12:56
  • Python中的list.sort()方法和函数sorted(list)

    2021-07-29 17:02:23
  • asp中如何过滤到单引号

    2009-07-05 18:38:00
  • [JS]点出统计器

    2013-07-22 03:23:24
  • PyCharm在win10的64位系统安装实例

    2022-10-14 20:24:46
  • Python字符串中查找子串小技巧

    2022-04-16 10:58:04
  • 从零开始写jQuery框架

    2008-12-24 13:37:00
  • Python实现简单求解给定整数的质因数算法示例

    2021-05-27 09:23:08
  • 一行Python代码制作动态二维码的实现

    2023-11-04 02:32:19
  • django_orm查询性能优化方法

    2021-03-01 20:30:19
  • python-for x in range的用法(注意要点、细节)

    2022-11-12 22:40:49
  • asp之家 网络编程 m.aspxhome.com