马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 描述符就是一个类,一个至少实现 __get__()、__set__() 或 __delete__() 三个特殊方法中的任意一个的类
2. 在描述符类中:
__get__(self, instance, owner): 用于访问属性,它返回属性的值
__set__(self, instance, value): 将在属性分配操作中调用,不返回任何内容
__delete__(self, instance): 控制删除操作,不返回任何内容
其中, self参数为描述符类, instance参数为描述符所在类的实例对象, owner为描述符所在类
3. 对于以下代码:
>>> class MyDes:
def __init__(self, value = None):
self.val = value
def __get__(self, instance, owner):
return self.val ** 2
>>> class Test:
def __init__(self):
self.x = MyDes(3)
>>> test = Test()
>>> test.x
<__main__.MyDes object at 0x1058e6f60>
访问实例层次上的描述符 x,只会返回描述符本身。为了让描述符能够正常工作,它们必须定义在类的层次上。如果你不这么做,那么 Python 无法自动为你调用 __get__ 和 __set__ 方法。
4. 使用描述符的实例: 摄氏度转华氏度:
class Celsius:
def __init__(self, value = 26.0):
self.value = float(value)
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
self.value = float(value)
class Fahrenheit:
def __get__(self, instance, owner):
return instance.cel *1.8 + 32
def __set__(self, instance, value):
instance.cel = ( float(value) - 32 ) / 1.8
class Temperature:
cel = Celsius()
fah = Fahrenheit()
|