您的位置:首页 > 编程语言 > Python开发

python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查

2017-01-28 16:40 1186 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐