python中的描述符
qingheluo2018-12-27清河洛317
描述符是一个类,不是用来单独使用的,它需要被一个拥有者类所包含。描述符可以用来某些属性之间互相依赖的类。要想成为一个描述符,这个类必须实现__get__,__set__和__delete__三个方法中至少一个。__get__(self, instance, owner):定义当试图取出描述符的值时的行为。 instance是拥有者类的实例, owner是拥有者类本身。__set__(self, instance, owner):定义当描述符的值改变时的行为。value 是要赋给描述符的值。__delete__(self, instance, owner):定义当描述符的值被删除时的行为。...
描述符是一个类,不是用来单独使用的,它需要被一个拥有者类所包含。描述符可以用来某些属性之间互相依赖的类。
要想成为一个描述符,这个类必须实现__get__,__set__和__delete__三个方法中至少一个。
__get__(self, instance, owner):定义当试图取出描述符的值时的行为。 instance是拥有者类的实例, owner是拥有者类本身。
__set__(self, instance, owner):定义当描述符的值改变时的行为。value 是要赋给描述符的值。
__delete__(self, instance, owner):定义当描述符的值被删除时的行为。
class Minute: def __init__(self,value=0): self.value=float(value) def __get__(self,instance,owner): return self.value def __set__(self,instance,value): self.value=float(value) class Hour: def __get__(self,instance,owner): return float(instance.fen/60) def __set__(self,instance,value): instance.fen=float(value*60) class Shijian: fen=Minute() shi=Hour() time=Shijian() time.fen=90 print(time.shi) 1.5
在该例中,不管设定time.shi还是time.fen,都可以获取对应的另一个属性
instance是拥有者类的实例,为time对象, owner是拥有者类本身为Shijian类。