@songying
2018-07-12T08:18:58.000000Z
字数 743
阅读 1149
python特殊方法
首先,描述符是一个类。要想成为一个描述符,一个类必须具有实现 __get__ , __set__ 和 __delete__ 三个方法中至少一个。
__get__定义当试图取出描述符的值时的行为。 instance 是拥有者类的实例, owner 是拥有者类本身。
__get__(self, instance, owner)
__set__定义当描述符的值改变时的行为。 instance 是拥有者类的实例, value 是要赋给描述符的值。
__set__(self, instance, owner)
__delete__定义当描述符的值被删除时的行为。 instance 是拥有者类的实例
__delete__(self, instance, owner)
class Meter(object):'''米的描述符。'''def __init__(self, value=0.0):self.value = float(value)def __get__(self, instance, owner):return self.valuedef __set__(self, instance, owner):self.value = float(value)class Foot(object):'''英尺的描述符。'''def __get(self, instance, owner):return instance.meter * 3.2808def __set(self, instance, value):instance.meter = float(value) / 3.2808class Distance(object):'''用于描述距离的类,包含英尺和米两个描述符。'''meter = Meter()foot = Foot()
