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
原创粉丝点击