首页 > 其他学习 > python > python中的描述符
2018
12-27

python中的描述符

描述符是一个类,不是用来单独使用的,它需要被一个拥有者类所包含。描述符可以用来某些属性之间互相依赖的类。

要想成为一个描述符,这个类必须实现__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类。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。