python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查
2017-01-28 16:40
1186 查看
python 7-6 如何使用描述符对实例属性做类型检查
解决方案
使用描述符来实现需要类型检查的属性:
分别实现get,set,__delete方法
在set内使用isinstance函数做类型检查
由于python是弱类型语言,变量可以指向任意的对象,我们可以给变量加上类型限制
解决方案
使用描述符来实现需要类型检查的属性:
分别实现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
相关文章推荐
- 神奇的描述符(二):使用描述符实现实例属性的类型检查
- python_如何对实例属性进行类型检查?
- python如何对实例属性进行类型检查
- 如何正确地使用Python的属性和描述符
- 【Python】使用装饰器为Python实现运行时类型检查
- 通过封装编写Book类。要求:类具有私有属性书名title、页数pageNum、类型type(默认为计算机类),并为这三个属性分别编写set和get方法。其中,页数不能少于200页,否则输出错误信息,
- 急!delphi中variant能否和object类型转换。实例:在使用getpropvalue(range,'属性')时提示类型有错,如何解决?!!
- PHP使用方法重载实现动态创建属性的get和set方法
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- 使用PHP魔术方法实现属性的set、get方法
- python中类和实例如何绑定属性与方法示例详解
- 解析如何使用反射调用类型成员 方法,字段,属性
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- python 函数定义和内置函数isinstance以及数据类型检查type的使用
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- 如何使用反射确定一个属性是否实现了IList接口,如何确定元素量为空的集合的元素类型。
- ajax实例:如何使用json+ajax的方法实现类似前端特效tab切换效果
- Python3基础 描述符类与自制property方法 __get__,__set__,__delete__方法 讲一个特殊的类的实例指派给另一个类的属性
- PHP使用方法重载实现动态创建属性的get和set方法
- 源程序List1.java,展示了如何使用list()方法来检查一个目录的内容的实例