@songying
2018-07-12T16:18:58.000000Z
字数 743
阅读 952
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.value
def __set__(self, instance, owner):
self.value = float(value)
class Foot(object):
'''英尺的描述符。'''
def __get(self, instance, owner):
return instance.meter * 3.2808
def __set(self, instance, value):
instance.meter = float(value) / 3.2808
class Distance(object):
'''用于描述距离的类,包含英尺和米两个描述符。'''
meter = Meter()
foot = Foot()