python如何对实例属性进行类型检查
作者:北门吹雪 发布时间:2021-08-17 09:28:19
标签:python,实例属性,类型检查
本文实例为大家分享了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


猜你喜欢
- golang.org/x包放到了https://github.com/golang/text中,下载时需要先在本地建立golang.org/
- 举例如下,一个服务器端的form 代码自动被解释成客户端代码:服务器端代码: &l
- 由于python多线程无法发挥多核的作用,因此当计算量很大的时候就需要考虑多进程。只不过多进程比较麻烦一些,进程中通信向来是一件麻烦事。py
- 导语哈喽哈喽!大家好!我是木木子,又到了每日游戏更新环节!8月30日,对暑假还意犹未尽的孩子们收到了一份“开学大礼”:通知要求,严格限制向未
- 共轭转置共轭转置The symbols (·)T , (·)∗, and (·)H are,respectively, the transp
- 本文实例为大家分享了javascript实现tab切换特效代码,供大家参考,具体内容如下效果图:实现代码:<!DOCTYPE html
- 或者说有一条命令 hostname [string],当string是不包含2950时,是true,包含2950时是false。使用Exce
- 本文实例讲述了Windows平台Python连接sqlite3数据库的方法。分享给大家供大家参考,具体如下:之前没有接触过sqlite数据库
- 一、使用django自带的user做外键,可以直接在model中使用。只需导入settings模块使用方法:在app应用(此处是Produc
- 我们先看一下相关数据结构的知识。 在学习线性表的时候,曾有这样一个例题。 已知一个存储整数的顺序表La,试构造顺序表Lb,要求顺序表Lb中只
- 费茨法则是人机交互领域里一个非常重要的法则,在10年来得到了广泛的应用。Fitts法则最基本的观点就是任何时候,当一个人用鼠标来移动鼠标指针
- 在Python中有一些内置的数据类型,比如int, str, list, tuple, dict等。Python的collections模块
- 这些标记告诉预处理器,它们包含代码,并且应对它们作出处理。与 CGI 非常相似,这些代码在服务器上运行,并返回一些内容,这些内容表现为发回给
- 前言:最近在学习PYQT5,感觉还挺有趣的,顺便记录一下自己的打包记录,也就当学习笔记啦,如果刚好也在学习python打包的小伙伴可以学一学
- 1、引言小 * 丝:鱼哥, 都说要想代码写的溜,Lamdba不能少。小鱼:你在项目代码多写几个lamdba试试,看看架构师找不找你喝茶水。小 * 丝
- 本文实例讲述了Python实现查找系统盘中需要找的字符。分享给大家供大家参考。具体如下:'''Created on
- 1.获取数据import requestsdef drg(url): try: &nb
- 如何显示数据库的结构?<html><head><meta http-equiv="Cont
- generator-vue-component可以快速生成自己的组件开发的脚手架,类似于vue-cli生成vue项目,这脚手架是目录结构是方
- 一、背景:在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等w