[关闭]
@songying 2018-07-12T16:18:58.000000Z 字数 743 阅读 952

属性描述符 -- 特殊方法

python特殊方法


什么是描述符?

首先,描述符是一个类。要想成为一个描述符,一个类必须具有实现 __get__ , __set____delete__ 三个方法中至少一个。

__get__

定义当试图取出描述符的值时的行为。 instance 是拥有者类的实例, owner 是拥有者类本身。

  1. __get__(self, instance, owner)

__set__

定义当描述符的值改变时的行为。 instance 是拥有者类的实例, value 是要赋给描述符的值。

  1. __set__(self, instance, owner)

__delete__

定义当描述符的值被删除时的行为。 instance 是拥有者类的实例

  1. __delete__(self, instance, owner)

例子

  1. class Meter(object):
  2. '''米的描述符。'''
  3. def __init__(self, value=0.0):
  4. self.value = float(value)
  5. def __get__(self, instance, owner):
  6. return self.value
  7. def __set__(self, instance, owner):
  8. self.value = float(value)
  9. class Foot(object):
  10. '''英尺的描述符。'''
  11. def __get(self, instance, owner):
  12. return instance.meter * 3.2808
  13. def __set(self, instance, value):
  14. instance.meter = float(value) / 3.2808
  15. class Distance(object):
  16. '''用于描述距离的类,包含英尺和米两个描述符。'''
  17. meter = Meter()
  18. foot = Foot()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注