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
0
投稿
猜你喜欢
- 原理:建一个栈,每次碰到一个新标签,就与栈顶的标签配对,如果配对,栈顶的标签就出栈,如果不配对,这个新标签就进栈,最终,栈如果是空的,说明所
- 本文实例讲述了python使用opencv实现马赛克效果。分享给大家供大家参考,具体如下:最近要实现opencv视频打马赛克,在网上找了一下
- 我们可以利用 Cookie collection 来刪除客户端的Cookies: <%
- ABS(x) 函数,此函数用来返回一个数的绝对值。 ACOS(x)函数,返回X的反余弦值。X范围从1到-1,输入值从0到派,以弧度为单位。
- ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject(fso)
- PyTorch基础入门一:PyTorch基本数据类型1)Tensor(张量)Pytorch里面处理的最基本的操作对象就是Tensor(张量)
- 自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代
- 下载依赖首先需要下载hadoop和spark,解压,然后设置环境变量。hadoop清华源下载spark清华源下载HADOOP_HOME =&
- 众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -
- python怎么求最大公约数和最小公倍数一、求最大公约数用辗转相除法求最大公约数的算法如下:两个正整数a和b(a>b),它们的最大公约
- 1.介绍当我们使用pytorch来构建网络框架的时候,也会遇到和tensorflow(tensorflow __init__、build 和
- 一、python运算时精度问题1.运行时精度问题在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和
- 1. 用途(?(id/name)yes-pattern|no-pattern)的作用是:对于给出的id或者name,先尝试去匹配
- DataLoaderDataset不能满足需求需自定义继承torch.utils.data.Dataset时需要override __ini
- 前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括:1.条件
- 在认证框架中还有其他的一些功能。 我们会在接下来的几个部分中进一步地了解它们。权限权限可以很方便地标识用户和用户组可以执行的操作。 它们被D
- 提到sa弱口令,我们首先就会想到,许多数据库都有1个类似的超级管理员账号,比如:Oracle是"system"和&quo
- 注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时,功能可能存
- 如代码1所示: // 代码 1 // 外观层类 class LWordHomePage { // 添加留言 public function
- 本文实例讲述了Django框架静态文件使用/中间件/禁用ip功能。分享给大家供大家参考,具体如下:静态文件一、静态文件的使用静态文件:网页中