描述符 2018/8/9 -------------------------------------------------------------------------- 1.描述符就是一个代表属性值的对象。 # 描述符只能在类级别上进行实例化。 # 不能通过在__init__()和其他方法中创建描述符对象来为每个实例创建描述符。 class TypedProperty (object): '''定义了一个描述符分配属性进行类型检查,如果尝试删除属性,它将引发错误''' def __init__( self, name,type, default=None): self.name='_'+name self.type=type self.default=default if default else type() def __get__(self,instance,cls): return getattr (instance, self.name, self. default) def __set__(self,instance, value): if not isinstance (value,self.type): raise TypeError("Must be a%s"% self.type) setattr (instance, self.name, value) def __delete__(self, instance): raise AttributeError ( "Can't delete attribute" ) class Foo (object): name=TypedProperty("name", str) num=TypedProperty ("num", int, 42) f= Foo() a= f.name #隐式调用Foo.name.__get__(f,Foo) f.name="Guido" #调用Foo.name._ set__(f, "Guido") del f.name #调用Foo.name.__delete__(f)
python 学习汇总61:class类-描述符(初级学习- tcy)
猜你喜欢
转载自blog.csdn.net/tcy23456/article/details/84262781
今日推荐
周排行