注册 登录

清河洛

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类。



网址导航