python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查
来源:互联网 发布:python3书籍推荐 知乎 编辑:程序博客网 时间:2024/06/05 07:39
python 7-6 如何使用描述符对实例属性做类型检查
解决方案
使用描述符来实现需要类型检查的属性:
分别实现get,set,__delete方法
在set内使用isinstance函数做类型检查
由于python是弱类型语言,变量可以指向任意的对象,我们可以给变量加上类型限制
class Attr(object): def __init__(self,name,type_): self.name = name self.type_ = type_ def __get__(self,instance,cls): print 'in__get__',instance,cls return instance.__dict__[self.name] def __set__(self,instance,value): print 'in __set__' if not isinstance(value,self.type_): raise TypeError("expected is %s"%(self.type_)) instance.__dict__[self.name] = value def __delete__(self,instance): print 'in __del__' del instance.__dict__[self.name]class Person(object): name = Attr('name',str) age = Attr('age',int) height = Attr('height',float)p=Person()p.name='bob'p.name=12
0 0
- python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查
- Python描述器实现类型检查
- 如何使用pyflakes给python做语法检查
- 如何使用pyflakes给python做语法检查
- 使用反射检查和实例化泛型类型
- c++ set类型使用
- Python中使用isinstance()判断变量类型
- 使用propTypes进行类型检查
- Python检查输入类型
- 如何检查浏览器类型
- Python参数类型检查的简单方法
- 使用FxCop做代码检查和优化
- 使用FxCop做代码检查和优化
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- python set类型
- Python中的Set类型
- Python 的set 类型及其copy方法
- list、vector、deque、map以及set类型分别使用的情况
- Linux 文件/文件夹 权限小札
- 非常可乐(HDU-1495)
- JDBC基础-事务管理
- go 服务器静态文件目录
- Java集合(上)
- python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查
- Android Context 的理解
- JDBC基础-连接池(数据源)
- es6笔记6^_^generator
- 10.4.3
- 矩阵特征值
- Deep learning Reading List
- PreparedStatement 模糊匹配 结果却:Parameter index out of range (1 > number of parameters, which is 0)
- python 7-7 如何在环状数据结构中管理内存,标准库中的weakref,创建一种能访问对象但不能增加引用计数的对象